From 1741d12b7b196b01ddae96bdc6c2598d70b72c22 Mon Sep 17 00:00:00 2001 From: coolbot <76798835+coolbot100s@users.noreply.github.com> Date: Fri, 10 Jul 2026 19:22:30 -0700 Subject: [PATCH] Moderation: Update quick replies (#6693) * Add new externals quick replies * handle non commercially licensed external content. * Move quick reply definitions * fix linebreak issues in quick replies --- .../src/data/attribution-quick-replies.ts | 59 -------------- .../externals-permissions/non-commercial.md | 7 ++ .../demonetized/demonetized-modpack.md | 8 ++ .../status-alerts/demonetized/demonetized.md | 7 ++ .../externals-permissions/arr-license.md | 5 ++ .../externals-permissions/nc-license.md | 3 + .../quick-replies/reports/gameplay-issue.md | 2 +- .../quick-replies/reports/not-a-hack.md | 2 +- .../reports/reupload-insufficient.md | 4 +- .../quick-replies/reports/suspected-ai.md | 2 +- .../quick-replies/tech-review/malware.md | 4 +- .../tech-review/unclear-misleading.md | 8 +- .../attribution-quick-replies.ts | 71 ++++++++++++++++ .../quick-replies/report-quick-replies.ts | 81 +++++++++++++++++++ .../tech-review-quick-replies.ts | 12 +-- .../src/data/report-quick-replies.ts | 81 ------------------- .../moderation/src/data/stages/permissions.ts | 15 ++++ .../moderation/src/data/stages/reupload.ts | 2 +- .../src/data/stages/status-alerts.ts | 42 ++++++++-- packages/moderation/src/index.ts | 6 +- packages/moderation/src/utils.ts | 5 +- 21 files changed, 257 insertions(+), 169 deletions(-) delete mode 100644 packages/moderation/src/data/attribution-quick-replies.ts create mode 100644 packages/moderation/src/data/messages/checklist-messages/externals-permissions/non-commercial.md create mode 100644 packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized-modpack.md create mode 100644 packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized.md create mode 100644 packages/moderation/src/data/messages/quick-replies/externals-permissions/arr-license.md create mode 100644 packages/moderation/src/data/messages/quick-replies/externals-permissions/nc-license.md create mode 100644 packages/moderation/src/data/quick-replies/attribution-quick-replies.ts create mode 100644 packages/moderation/src/data/quick-replies/report-quick-replies.ts rename packages/moderation/src/data/{ => quick-replies}/tech-review-quick-replies.ts (58%) delete mode 100644 packages/moderation/src/data/report-quick-replies.ts diff --git a/packages/moderation/src/data/attribution-quick-replies.ts b/packages/moderation/src/data/attribution-quick-replies.ts deleted file mode 100644 index edbbca7bcb..0000000000 --- a/packages/moderation/src/data/attribution-quick-replies.ts +++ /dev/null @@ -1,59 +0,0 @@ -import type { QuickReply } from '../types/quick-reply' - -export default [ - { - label: '✅ Corrections Applied', - message: async () => - (await import('./messages/quick-replies/externals-permissions/corrections-applied.md?raw')) - .default, - private: false, - }, - { - label: 'ðŸšŦ Bad Proofs', - message: async () => - (await import('./messages/quick-replies/externals-permissions/illegitimate-evidence.md?raw')) - .default, - private: false, - }, - { - label: '⛔ Inaccessible Proofs', - message: async () => - (await import('./messages/quick-replies/externals-permissions/inaccessible-evidence.md?raw')) - .default, - private: false, - }, - { - label: '🌐 Not Permission to Distribute', - message: async () => - (await import('./messages/quick-replies/externals-permissions/but-its-online.md?raw')) - .default, - private: false, - }, - { - label: 'ðŸī Forks', - message: async () => - (await import('./messages/quick-replies/externals-permissions/forks.md?raw')).default, - private: false, - }, - { - label: 'ðŸ’ē Premium Content', - message: async () => - (await import('./messages/quick-replies/externals-permissions/premium-content.md?raw')) - .default, - private: false, - }, - { - label: '⚖ïļ Prohibited Content', - message: async () => - (await import('./messages/quick-replies/externals-permissions/prohibited-content.md?raw')) - .default, - private: false, - }, - { - label: '🧑‍ðŸ’ŧ Cheats and Hacks', - message: async () => - (await import('./messages/quick-replies/externals-permissions/cheats-and-hacks.md?raw')) - .default, - private: false, - }, -] as ReadonlyArray diff --git a/packages/moderation/src/data/messages/checklist-messages/externals-permissions/non-commercial.md b/packages/moderation/src/data/messages/checklist-messages/externals-permissions/non-commercial.md new file mode 100644 index 0000000000..f614e27a18 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist-messages/externals-permissions/non-commercial.md @@ -0,0 +1,7 @@ +## External Content Contains Commercial Restrictions + +Some external content in your Modpack was found to be licensed under non-commercial terms.
+To ensure your Modpack complies with these licensing requirements, you must [opt-out of project monetization](%PROJECT_MONETIZATION_SETTINGS_LINK%), or provide proof of your explicit permission to include this content in your monetized Modpack.
+Keep in mind, if your project is approved with monetization disabled, you will not be able to re-enable it. + +Please view your project's %PROJECT_PERMISSIONS_FLINK% for a list of content with non-commercial licensing requirements. diff --git a/packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized-modpack.md b/packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized-modpack.md new file mode 100644 index 0000000000..1946731fed --- /dev/null +++ b/packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized-modpack.md @@ -0,0 +1,8 @@ +## Project Monetization + +It looks like you've set this project to [opt-out of monetization](%PROJECT_MONETIZATION_SETTINGS_LINK%) as required by the licensing of some included external content. + +So that your project can be Approved, you will not be able to re-enable monetization.
+Please view your project's %PROJECT_PERMISSIONS_FLINK% for a list of content with non-commercial licensing requirements. + +If you think this is a mistake, %SUPPORT% diff --git a/packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized.md b/packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized.md new file mode 100644 index 0000000000..275463d937 --- /dev/null +++ b/packages/moderation/src/data/messages/checklist-messages/status-alerts/demonetized/demonetized.md @@ -0,0 +1,7 @@ +## Project Monetization + +It looks like you've set this project to [opt-out of monetization](%PROJECT_MONETIZATION_SETTINGS_LINK%) in order to comply with the licensing requirements of included content. + +So that your project can be Approved, you will not be able to re-enable monetization. + +If you think this is a mistake, %SUPPORT% diff --git a/packages/moderation/src/data/messages/quick-replies/externals-permissions/arr-license.md b/packages/moderation/src/data/messages/quick-replies/externals-permissions/arr-license.md new file mode 100644 index 0000000000..317a965adb --- /dev/null +++ b/packages/moderation/src/data/messages/quick-replies/externals-permissions/arr-license.md @@ -0,0 +1,5 @@ +The ARR license of this content does _not_ permit redistribution of files. + +Listing content as ARR or "no license" indicates that the author intends to reserve **all** rights to their content, including the sole right to redistribution, unless otherwise specified. + +If the author has indicated that this content may be distributed in Modpacks, please provide proof of this exception. diff --git a/packages/moderation/src/data/messages/quick-replies/externals-permissions/nc-license.md b/packages/moderation/src/data/messages/quick-replies/externals-permissions/nc-license.md new file mode 100644 index 0000000000..9dd8cb2647 --- /dev/null +++ b/packages/moderation/src/data/messages/quick-replies/externals-permissions/nc-license.md @@ -0,0 +1,3 @@ +This project's license contains a non-commercial clause. + +This may prohibit your ability to monetize this Modpack if included. diff --git a/packages/moderation/src/data/messages/quick-replies/reports/gameplay-issue.md b/packages/moderation/src/data/messages/quick-replies/reports/gameplay-issue.md index fd78b8bfac..fcfc9d4cb0 100644 --- a/packages/moderation/src/data/messages/quick-replies/reports/gameplay-issue.md +++ b/packages/moderation/src/data/messages/quick-replies/reports/gameplay-issue.md @@ -2,5 +2,5 @@ Unfortunately, the Moderation team is unable to assist with your issue. The reporting system is exclusively for reporting issues to Moderation staff; only violations of [Modrinth's Content Rules](https://modrinth.com/legal/rules) should be reported. The members of the project you're reporting do not see that you have submitted a report. -If you are having issues with crashes, please check out our helpful guide to [Debugging Minecraft Crashes](https://support.modrinth.com/aen/articles/8792916) to learn how to diagnose and fix crashes. +If you are having issues with crashes, please check out our helpful guide to [Debugging Minecraft Crashes](https://support.modrinth.com/aen/articles/8792916) to learn how to diagnose and fix crashes.
For other project-specific issues consider asking the project's own community, check for a Discord or Issues link on the project page. diff --git a/packages/moderation/src/data/messages/quick-replies/reports/not-a-hack.md b/packages/moderation/src/data/messages/quick-replies/reports/not-a-hack.md index ce4bd3ba88..22873eb731 100644 --- a/packages/moderation/src/data/messages/quick-replies/reports/not-a-hack.md +++ b/packages/moderation/src/data/messages/quick-replies/reports/not-a-hack.md @@ -1,4 +1,4 @@ Thank you for your report, we understand your concerns. -Currently, Modrinth does not prohibit "%TERM%" style mods or consider these to de facto violate section 3 of [Modrinth's Content Rules](https://modrinth.com/legal/rules) due to their considerable legitimate use-cases. +Currently, Modrinth does not prohibit "%TERM%" style mods or consider these to de facto violate section 3 of [Modrinth's Content Rules](https://modrinth.com/legal/rules) due to their considerable legitimate use-cases.
If you have reason to believe a project on Modrinth is intentionally enabling or promoting cheating, we ask that you create a new report and provide sufficient evidence. diff --git a/packages/moderation/src/data/messages/quick-replies/reports/reupload-insufficient.md b/packages/moderation/src/data/messages/quick-replies/reports/reupload-insufficient.md index 580e7b92f7..a64f0f31d2 100644 --- a/packages/moderation/src/data/messages/quick-replies/reports/reupload-insufficient.md +++ b/packages/moderation/src/data/messages/quick-replies/reports/reupload-insufficient.md @@ -1,11 +1,11 @@ If you have reason to believe that a project on Modrinth is reuploading code or assets without permission, or otherwise violating section 4 of [Modrinth's Content Rules](https://modrinth.com/legal/rules), we ask that you create a new report and provide the necessary details for our Moderation team to take any applicable actions. -We ask that you provide examples of identical or significantly derived code or assets likely to have been copied from an original work. +We ask that you provide examples of identical or significantly derived code or assets likely to have been copied from an original work.
Be sure to include: - A link to the original work and its licensing, if available. - The relative file path of the identical class(es) or asset(s) for the infringing and source work. - Explanation of a reasonable belief that this content is copied from the provided source work, and not likely to have mutually originated or derived from another source. -Keep in mind that our Moderation team only enforces [Modrinth's Content Rules](https://modrinth.com/legal/rules) and can not arbitrate copyright disputes. +Keep in mind that our Moderation team only enforces [Modrinth's Content Rules](https://modrinth.com/legal/rules) and can not arbitrate copyright disputes.
For more information, please read our [Copyright Policy](https://modrinth.com/legal/copyright). diff --git a/packages/moderation/src/data/messages/quick-replies/reports/suspected-ai.md b/packages/moderation/src/data/messages/quick-replies/reports/suspected-ai.md index 54f2f19f79..6637328a9f 100644 --- a/packages/moderation/src/data/messages/quick-replies/reports/suspected-ai.md +++ b/packages/moderation/src/data/messages/quick-replies/reports/suspected-ai.md @@ -1,4 +1,4 @@ Thank you for your report, we understand your concerns. -At this time, Modrinth does not prohibit the use of any specific tool, including AI tools, in the creation of project pages or content on Modrinth. +At this time, Modrinth does not prohibit the use of any specific tool, including AI tools, in the creation of project pages or content on Modrinth.
If you have reason to believe that this project does not or cannot function as advertised, may be intentionally misleading, or otherwise violates [Modrinth's Content Rules](https://modrinth.com/legal/rules) please create a new report with the relevant evidence. diff --git a/packages/moderation/src/data/messages/quick-replies/tech-review/malware.md b/packages/moderation/src/data/messages/quick-replies/tech-review/malware.md index db41f12ae7..45b649af6c 100644 --- a/packages/moderation/src/data/messages/quick-replies/tech-review/malware.md +++ b/packages/moderation/src/data/messages/quick-replies/tech-review/malware.md @@ -1,5 +1,5 @@ ## Indefinitely Rejected -A project you uploaded has been found to contain or distribute malicious files, this is strictly prohibited and a violation of [Modrinth's Terms of Use](https://modrinth.com/legal/terms). -Our Moderation team has determined this project, and all projects associated with your account should be rejected indefinitely. +A project you uploaded has been found to contain or distribute malicious files, this is strictly prohibited and a violation of [Modrinth's Terms of Use](https://modrinth.com/legal/terms).
+Our Moderation team has determined this project, and all projects associated with your account should be rejected indefinitely.
We believe this is the best course of action at this time and ask that you **do not resubmit this project**. diff --git a/packages/moderation/src/data/messages/quick-replies/tech-review/unclear-misleading.md b/packages/moderation/src/data/messages/quick-replies/tech-review/unclear-misleading.md index 9110060d5c..81e695edfd 100644 --- a/packages/moderation/src/data/messages/quick-replies/tech-review/unclear-misleading.md +++ b/packages/moderation/src/data/messages/quick-replies/tech-review/unclear-misleading.md @@ -1,7 +1,7 @@ ## Description Clarity -Per section 2 of [Modrinth's Content Rules](https://modrinth.com/legal/rules) It's important that your Description accurately and honestly represents the content of your project. -Currently, some elements in your Description may be confusing or misleading. -Please edit your description to ensure it accurately represents the current functionality of your project. -Avoid making hyperbolic claims that could misrepresent the facts of your project. +Per section 2 of [Modrinth's Content Rules](https://modrinth.com/legal/rules) It's important that your Description accurately and honestly represents the content of your project.
+Currently, some elements in your Description may be confusing or misleading.
+Please edit your description to ensure it accurately represents the current functionality of your project.
+Avoid making hyperbolic claims that could misrepresent the facts of your project.
Ensure that your Description is accurate and not likely to confuse users. diff --git a/packages/moderation/src/data/quick-replies/attribution-quick-replies.ts b/packages/moderation/src/data/quick-replies/attribution-quick-replies.ts new file mode 100644 index 0000000000..8b9db5cd45 --- /dev/null +++ b/packages/moderation/src/data/quick-replies/attribution-quick-replies.ts @@ -0,0 +1,71 @@ +import type { QuickReply } from '../../types/quick-reply' + +export default [ + { + label: '✅ Corrections Applied', + message: async () => + (await import('../messages/quick-replies/externals-permissions/corrections-applied.md?raw')) + .default, + private: false, + }, + { + label: 'ðŸšŦ Bad Proofs', + message: async () => + (await import('../messages/quick-replies/externals-permissions/illegitimate-evidence.md?raw')) + .default, + private: false, + }, + { + label: '⛔ Inaccessible Proofs', + message: async () => + (await import('../messages/quick-replies/externals-permissions/inaccessible-evidence.md?raw')) + .default, + private: false, + }, + { + label: '🌐 Not Permission to Distribute', + message: async () => + (await import('../messages/quick-replies/externals-permissions/but-its-online.md?raw')) + .default, + private: false, + }, + { + label: '📝 ARR License', + message: async () => + (await import('../messages/quick-replies/externals-permissions/arr-license.md?raw')).default, + private: false, + }, + { + label: '💰 Non-Commercial License', + message: async () => + (await import('../messages/quick-replies/externals-permissions/nc-license.md?raw')).default, + private: false, + }, + { + label: 'ðŸī Forks', + message: async () => + (await import('../messages/quick-replies/externals-permissions/forks.md?raw')).default, + private: false, + }, + { + label: 'ðŸ’ē Premium Content', + message: async () => + (await import('../messages/quick-replies/externals-permissions/premium-content.md?raw')) + .default, + private: false, + }, + { + label: '⚖ïļ Prohibited Content', + message: async () => + (await import('../messages/quick-replies/externals-permissions/prohibited-content.md?raw')) + .default, + private: false, + }, + { + label: '🧑‍ðŸ’ŧ Cheats and Hacks', + message: async () => + (await import('../messages/quick-replies/externals-permissions/cheats-and-hacks.md?raw')) + .default, + private: false, + }, +] as ReadonlyArray diff --git a/packages/moderation/src/data/quick-replies/report-quick-replies.ts b/packages/moderation/src/data/quick-replies/report-quick-replies.ts new file mode 100644 index 0000000000..5e9c8d4541 --- /dev/null +++ b/packages/moderation/src/data/quick-replies/report-quick-replies.ts @@ -0,0 +1,81 @@ +import type { QuickReply } from '../../types/quick-reply' +import type { ExtendedReport } from '../../types/reports' + +export default [ + { + label: '✅⚖ïļ Action Taken', + message: async () => + (await import('../messages/quick-replies/reports/action-taken.md?raw')).default, + private: false, + }, + { + label: '✅⚠ïļ Author Alerted', + message: async () => + (await import('../messages/quick-replies/reports/author-alerted.md?raw')).default, + private: false, + }, + { + label: '✅🏷ïļ Metadata Corrected', + message: async () => + (await import('../messages/quick-replies/reports/metadata-corrected.md?raw')).default, + private: false, + }, + { + label: '❌🏷ïļ Metadata Insufficient', + message: async () => + (await import('../messages/quick-replies/reports/metadata-insufficient.md?raw')).default, + private: false, + }, + { + label: '❌ðŸ“Ī Reupload Insufficient', + message: async () => + (await import('../messages/quick-replies/reports/reupload-insufficient.md?raw')).default, + private: false, + }, + { + label: '❌ðŸģïļâ€ðŸŒˆ Spam', + message: async () => (await import('../messages/quick-replies/reports/spam.md?raw')).default, + private: false, + }, + { + label: 'âŒðŸ›Ąïļ Antivirus', + message: async () => + (await import('../messages/quick-replies/reports/antivirus.md?raw')).default, + private: false, + }, + { + label: '❌ðŸ‘ŧ Functionality Disclosed', + message: async () => + (await import('../messages/quick-replies/reports/functionality-disclosed.md?raw')).default, + private: false, + }, + { + label: '❌ðŸĪ– Suspected AI', + message: async () => + (await import('../messages/quick-replies/reports/suspected-ai.md?raw')).default, + private: false, + }, + { + label: '❌ðŸ‘Đ‍ðŸ’ŧ Not a Hack', + message: async () => + (await import('../messages/quick-replies/reports/not-a-hack.md?raw')).default, + private: false, + }, + { + label: '❌ðŸ•đïļ Gameplay Issue', + message: async () => + (await import('../messages/quick-replies/reports/gameplay-issue.md?raw')).default, + private: false, + }, + { + label: '❌🎧 Platform Issue', + message: async () => + (await import('../messages/quick-replies/reports/platform-issue.md?raw')).default, + private: false, + }, + { + label: '❌ðŸŠĶ Stale', + message: async () => (await import('../messages/quick-replies/reports/stale.md?raw')).default, + private: false, + }, +] as ReadonlyArray> diff --git a/packages/moderation/src/data/tech-review-quick-replies.ts b/packages/moderation/src/data/quick-replies/tech-review-quick-replies.ts similarity index 58% rename from packages/moderation/src/data/tech-review-quick-replies.ts rename to packages/moderation/src/data/quick-replies/tech-review-quick-replies.ts index 37e1b51efb..d77a1c349c 100644 --- a/packages/moderation/src/data/tech-review-quick-replies.ts +++ b/packages/moderation/src/data/quick-replies/tech-review-quick-replies.ts @@ -1,6 +1,6 @@ import type { Labrinth } from '@modrinth/api-client' -import type { QuickReply } from '../types/quick-reply' +import type { QuickReply } from '../../types/quick-reply' export interface TechReviewContext { project: Labrinth.Projects.v3.Project @@ -12,31 +12,31 @@ export default [ { label: '⚠ïļ Unclear/Misleading', message: async () => - (await import('./messages/quick-replies/tech-review/unclear-misleading.md?raw')).default, + (await import('../messages/quick-replies/tech-review/unclear-misleading.md?raw')).default, private: false, }, { label: '📝 Request Source', message: async () => - (await import('./messages/quick-replies/tech-review/request-source.md?raw')).default, + (await import('../messages/quick-replies/tech-review/request-source.md?raw')).default, private: false, }, { label: '🔒 Request Source (Obf)', message: async () => - (await import('./messages/quick-replies/tech-review/request-source-obf.md?raw')).default, + (await import('../messages/quick-replies/tech-review/request-source-obf.md?raw')).default, private: false, }, { label: 'ðŸ“Ķ Request Source (Bin)', message: async () => - (await import('./messages/quick-replies/tech-review/request-source-bin.md?raw')).default, + (await import('../messages/quick-replies/tech-review/request-source-bin.md?raw')).default, private: false, }, { label: 'ðŸšŦ Malware', message: async () => - (await import('./messages/quick-replies/tech-review/malware.md?raw')).default, + (await import('../messages/quick-replies/tech-review/malware.md?raw')).default, private: false, }, ] as ReadonlyArray> diff --git a/packages/moderation/src/data/report-quick-replies.ts b/packages/moderation/src/data/report-quick-replies.ts deleted file mode 100644 index 3ecbb0973b..0000000000 --- a/packages/moderation/src/data/report-quick-replies.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { QuickReply } from '../types/quick-reply' -import type { ExtendedReport } from '../types/reports' - -export default [ - { - label: '✅⚖ïļ Action Taken', - message: async () => - (await import('./messages/quick-replies/reports/action-taken.md?raw')).default, - private: false, - }, - { - label: '✅⚠ïļ Author Alerted', - message: async () => - (await import('./messages/quick-replies/reports/author-alerted.md?raw')).default, - private: false, - }, - { - label: '✅🏷ïļ Metadata Corrected', - message: async () => - (await import('./messages/quick-replies/reports/metadata-corrected.md?raw')).default, - private: false, - }, - { - label: '❌🏷ïļ Metadata Insufficient', - message: async () => - (await import('./messages/quick-replies/reports/metadata-insufficient.md?raw')).default, - private: false, - }, - { - label: '❌ðŸ“Ī Reupload Insufficient', - message: async () => - (await import('./messages/quick-replies/reports/reupload-insufficient.md?raw')).default, - private: false, - }, - { - label: '❌ðŸģïļâ€ðŸŒˆ Spam', - message: async () => (await import('./messages/quick-replies/reports/spam.md?raw')).default, - private: false, - }, - { - label: 'âŒðŸ›Ąïļ Antivirus', - message: async () => - (await import('./messages/quick-replies/reports/antivirus.md?raw')).default, - private: false, - }, - { - label: '❌ðŸ‘ŧ Functionality Disclosed', - message: async () => - (await import('./messages/quick-replies/reports/functionality-disclosed.md?raw')).default, - private: false, - }, - { - label: '❌ðŸĪ– Suspected AI', - message: async () => - (await import('./messages/quick-replies/reports/suspected-ai.md?raw')).default, - private: false, - }, - { - label: '❌ðŸ‘Đ‍ðŸ’ŧ Not a Hack', - message: async () => - (await import('./messages/quick-replies/reports/not-a-hack.md?raw')).default, - private: false, - }, - { - label: '❌ðŸ•đïļ Gameplay Issue', - message: async () => - (await import('./messages/quick-replies/reports/gameplay-issue.md?raw')).default, - private: false, - }, - { - label: '❌🎧 Platform Issue', - message: async () => - (await import('./messages/quick-replies/reports/platform-issue.md?raw')).default, - private: false, - }, - { - label: '❌ðŸŠĶ Stale', - message: async () => (await import('./messages/quick-replies/reports/stale.md?raw')).default, - private: false, - }, -] as ReadonlyArray> diff --git a/packages/moderation/src/data/stages/permissions.ts b/packages/moderation/src/data/stages/permissions.ts index 0f23c2d464..cfc2f573d5 100644 --- a/packages/moderation/src/data/stages/permissions.ts +++ b/packages/moderation/src/data/stages/permissions.ts @@ -48,6 +48,21 @@ const permissions: Stage = { (await import('../messages/checklist-messages/externals-permissions/missing.md?raw')) .default, }, + { + id: 'non-commercial-external-content', + type: 'button', + label: 'Non-commercial externals', + weight: 2003, + suggestedStatus: 'rejected', + severity: 'high', + shouldShow: (project, projectV3) => + projectV3.project_types?.includes('modpack') && + projectV3.monetization_status === 'monetized' && + !projectV3?.minecraft_server, + message: async () => + (await import('../messages/checklist-messages/externals-permissions/non-commercial.md?raw')) + .default, + }, ], } diff --git a/packages/moderation/src/data/stages/reupload.ts b/packages/moderation/src/data/stages/reupload.ts index 8ffb1b1605..b5477319c7 100644 --- a/packages/moderation/src/data/stages/reupload.ts +++ b/packages/moderation/src/data/stages/reupload.ts @@ -208,7 +208,7 @@ const reupload: Stage = { required: false, }, ], - } as ToggleAction, + }, ], disablesActions: [ diff --git a/packages/moderation/src/data/stages/status-alerts.ts b/packages/moderation/src/data/stages/status-alerts.ts index c044010bb4..b8ab2e1bda 100644 --- a/packages/moderation/src/data/stages/status-alerts.ts +++ b/packages/moderation/src/data/stages/status-alerts.ts @@ -22,7 +22,7 @@ const statusAlerts: Stage = { shouldShow: (project) => project.status !== 'approved', message: async () => (await import('../messages/checklist-messages/status-alerts/fixed.md?raw')).default, - } as ButtonAction, + }, { id: 'status_corrections_applied-approved', type: 'button', @@ -34,7 +34,7 @@ const statusAlerts: Stage = { message: async () => (await import('../messages/checklist-messages/status-alerts/fixed-approved.md?raw')) .default, - } as ButtonAction, + }, { id: 'status_private_use', type: 'button', @@ -46,7 +46,7 @@ const statusAlerts: Stage = { message: async () => (await import('../messages/checklist-messages/status-alerts/private/private.md?raw')) .default, - } as ButtonAction, + }, { id: 'status_private_use-server', type: 'button', @@ -58,7 +58,7 @@ const statusAlerts: Stage = { message: async () => (await import('../messages/checklist-messages/status-alerts/private/private-server.md?raw')) .default, - } as ButtonAction, + }, { id: 'status_server_use', type: 'button', @@ -68,7 +68,7 @@ const statusAlerts: Stage = { project.project_type === 'modpack' && !projectV3?.minecraft_server, message: async () => (await import('../messages/checklist-messages/status-alerts/serverpack.md?raw')).default, - } as ButtonAction, + }, { id: 'status_account_issues', type: 'button', @@ -79,7 +79,7 @@ const statusAlerts: Stage = { message: async () => (await import('../messages/checklist-messages/status-alerts/account_issues.md?raw')) .default, - } as ButtonAction, + }, { id: 'status_automod_confusion', type: 'button', @@ -89,7 +89,35 @@ const statusAlerts: Stage = { message: async () => (await import('../messages/checklist-messages/status-alerts/automod_confusion.md?raw')) .default, - } as ButtonAction, + }, + { + id: 'status_demonetized', + type: 'button', + label: `Demonetized`, + weight: -999999, + shouldShow: (project, projectV3) => + projectV3.monetization_status === 'force-demonetized' && + !projectV3.project_types?.includes('modpack') && + !projectV3?.minecraft_server, + message: async () => + ( + await import('../messages/checklist-messages/status-alerts/demonetized/demonetized.md?raw') + ).default, + }, + { + id: 'status_demonetized_modpack', + type: 'button', + label: `Demonetized`, + weight: -999999, + shouldShow: (project, projectV3) => + projectV3.monetization_status === 'force-demonetized' && + projectV3.project_types?.includes('modpack') && + !projectV3?.minecraft_server, + message: async () => + ( + await import('../messages/checklist-messages/status-alerts/demonetized/demonetized-modpack.md?raw') + ).default, + }, ], } diff --git a/packages/moderation/src/index.ts b/packages/moderation/src/index.ts index 80e08ccf02..f904ab9c08 100644 --- a/packages/moderation/src/index.ts +++ b/packages/moderation/src/index.ts @@ -3,12 +3,12 @@ export { default as keybinds } from './data/keybinds' export { finalPermissionMessages } from './data/modpack-permissions-stage' export { default as nags } from './data/nags' export * from './data/nags/index' -export { default as reportQuickReplies } from './data/report-quick-replies' +export { default as reportQuickReplies } from './data/quick-replies/report-quick-replies' export { type TechReviewContext, default as techReviewQuickReplies, -} from './data/tech-review-quick-replies' -export { default as attributionQuickReplies } from './data/attribution-quick-replies' +} from './data/quick-replies/tech-review-quick-replies' +export { default as attributionQuickReplies } from './data/quick-replies/attribution-quick-replies' export * from './locales' export * from './types/actions' export * from './types/keybinds' diff --git a/packages/moderation/src/utils.ts b/packages/moderation/src/utils.ts index 970d0e446c..a02afedb9a 100644 --- a/packages/moderation/src/utils.ts +++ b/packages/moderation/src/utils.ts @@ -385,7 +385,10 @@ export function flattenProjectVariables( vars[`PROJECT_PERMISSIONS_LINK`] = `https://modrinth.com/project/${project.id}/settings/permissions` vars[`PROJECT_PERMISSIONS_FLINK`] = - `[Permissions dashboard](https://modrinth.com/project/${project.id}/settings/permissions)` + `[Permissions settings](https://modrinth.com/project/${project.id}/settings/permissions)` + vars[`PROJECT_MONETIZATION_SETTINGS_LINK`] = `https://modrinth.com/project/${project.id}/settings` + vars[`PROJECT_MONETIZATION_SETTINGS_FLINK`] = + `[Monetization settings](https://modrinth.com/project/${project.id}/settings)` return vars }