diff options
Diffstat (limited to 'packages/gateway/src')
| -rw-r--r-- | packages/gateway/src/listeners/artMediaModeration.ts | 40 | ||||
| -rw-r--r-- | packages/gateway/src/listeners/constants.ts | 2 | ||||
| -rw-r--r-- | packages/gateway/src/listeners/index.ts | 2 |
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); |