summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/gateway/src/listeners/artMediaModeration.ts40
-rw-r--r--packages/gateway/src/listeners/constants.ts2
-rw-r--r--packages/gateway/src/listeners/index.ts2
3 files changed, 44 insertions, 0 deletions
diff --git a/packages/gateway/src/listeners/artMediaModeration.ts b/packages/gateway/src/listeners/artMediaModeration.ts
new file mode 100644
index 0000000..807aa2b
--- /dev/null
+++ b/packages/gateway/src/listeners/artMediaModeration.ts
@@ -0,0 +1,40 @@
+import { Client, Events, Message } from "discord.js";
+import { ART_MEDIA_NSFW_CHANNEL_ID, NSFW_DISCUSSION_CHANNEL_ID } from "./constants";
+
+export const handleArtMediaModeration = (client: Client) => {
+ client.on(Events.MessageCreate, async (message: Message) => {
+ if (message.channelId !== ART_MEDIA_NSFW_CHANNEL_ID) return;
+
+ try {
+ if (message.author.id === client.user?.id) return;
+
+ const hasMediaAttachments = message.attachments.some((attachment) => {
+ const contentType = attachment.contentType;
+
+ return (
+ contentType?.startsWith("image/") ||
+ contentType?.startsWith("video/") ||
+ contentType?.startsWith("audio/")
+ );
+ });
+
+ if (hasMediaAttachments) return;
+
+ await message.delete();
+
+ const errorMessage = await (message.channel as any).send(
+ `${message.author}, only media can go in this channel. NSFW discussion should be kept in <#${NSFW_DISCUSSION_CHANNEL_ID}>.\n\nThis message will be deleted in 30 seconds.`,
+ );
+
+ setTimeout(async () => {
+ try {
+ await errorMessage.delete();
+ } catch (error) {
+ console.error("Failed to delete art media moderation error message:", error);
+ }
+ }, 30000);
+ } catch (error) {
+ console.error("Error in art media moderation:", error);
+ }
+ });
+};
diff --git a/packages/gateway/src/listeners/constants.ts b/packages/gateway/src/listeners/constants.ts
index 32cdd69..9d4af6d 100644
--- a/packages/gateway/src/listeners/constants.ts
+++ b/packages/gateway/src/listeners/constants.ts
@@ -1 +1,3 @@
export const ROLEPLAY_UMAGRAM_CHANNEL_ID = "1419523288001937458";
+export const ART_MEDIA_NSFW_CHANNEL_ID = "1420297845998620733";
+export const NSFW_DISCUSSION_CHANNEL_ID = "1410333697701314791";
diff --git a/packages/gateway/src/listeners/index.ts b/packages/gateway/src/listeners/index.ts
index bd97bcd..6d796b1 100644
--- a/packages/gateway/src/listeners/index.ts
+++ b/packages/gateway/src/listeners/index.ts
@@ -1,6 +1,7 @@
import { Client } from "discord.js";
import { handleIqdbModeration } from "./iqdbModeration";
import { handleRoleplayUmagram } from "./roleplayUmagram";
+import { handleArtMediaModeration } from "./artMediaModeration";
import { handleAnnouncementReaction } from "./announcementReaction";
import { handleRoleProtection } from "./roleProtection";
import { handleChannelDeletion } from "./channelDeletion";
@@ -12,6 +13,7 @@ export const handleListeners = (client: Client) => {
handleClientReady(client);
handleIqdbModeration(client);
handleRoleplayUmagram(client);
+ handleArtMediaModeration(client);
handleAnnouncementReaction(client);
handleRoleProtection(client);
handleChannelDeletion(client);