diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/listeners/bush/supportThread.ts | 63 | ||||
-rw-r--r-- | src/listeners/message/autoThread.ts | 65 |
2 files changed, 63 insertions, 65 deletions
diff --git a/src/listeners/bush/supportThread.ts b/src/listeners/bush/supportThread.ts new file mode 100644 index 0000000..d408eef --- /dev/null +++ b/src/listeners/bush/supportThread.ts @@ -0,0 +1,63 @@ +import { BushListener, BushTextChannel, type BushClientEvents } from '#lib'; +import assert from 'assert'; +import { stripIndent } from 'common-tags'; +import { Embed, MessageType, PermissionFlagsBits } from 'discord.js'; + +export default class SupportThreadListener extends BushListener { + public constructor() { + super('supportThread', { + emitter: 'client', + event: 'messageCreate', + category: 'bush' + }); + } + + public override async exec(...[message]: BushClientEvents['messageCreate']): Promise<Promise<void> | undefined> { + if (!client.config.isProduction || !message.inGuild()) return; + if (![MessageType.Default, MessageType.Reply].includes(message.type)) return; + if (message.thread) return; + if (message.author.bot && (message.author.id !== '444871677176709141' || !message.content.includes('uploaded a log,'))) + return; + + if (message.guild.id !== '516977525906341928') return; // mb + if (message.channel.id !== '714332750156660756') return; // neu-support + + if ( + [await message.guild.getSetting('prefix'), `<@!${client.user!.id}>`, `<@${client.user!.id}>`].some((v) => + message.content.trim().startsWith(v) + ) && + client.commandHandler.aliases.some((alias) => message.content.includes(alias)) + ) + return; + + assert(message.channel instanceof BushTextChannel); + + if (!message.channel.permissionsFor(message.guild.me!).has(PermissionFlagsBits.CreatePublicThreads)) return; + const thread = await message + .startThread({ + name: `Support - ${message.author.username}#${message.author.discriminator}`, + autoArchiveDuration: 60, + reason: 'Support Thread' + }) + .catch(() => null); + if (!thread) return; + const embed = new Embed() + .setTitle('NotEnoughUpdates Support') + .setDescription( + stripIndent` + Welcome to Moulberry Bush Support:tm: + + Please make sure you have the latest version found in <#693586404256645231>. + Additionally if you need help installing the mod be sure to read <#737444942724726915> for a guide on how to do so.` + ) + .setColor(util.colors.Blurple); + void thread + .send({ embeds: [embed] }) + .then(() => + client.console.info( + 'supportThread', + `opened a support thread for <<${message.author.tag}>> in <<${message.channel.name}>> in <<${message.guild!.name}>>.` + ) + ); + } +} diff --git a/src/listeners/message/autoThread.ts b/src/listeners/message/autoThread.ts deleted file mode 100644 index 540f479..0000000 --- a/src/listeners/message/autoThread.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { BushListener, type BushClientEvents, type BushTextChannel } from '#lib'; -import { Embed, GuildTextBasedChannel, MessageType, PermissionFlagsBits } from 'discord.js'; - -export default class autoThreadListener extends BushListener { - public constructor() { - super('autoThread', { - emitter: 'client', - event: 'messageCreate', - category: 'message' - }); - } - - public override async exec(...[message]: BushClientEvents['messageCreate']): Promise<Promise<void> | undefined> { - if (!client.config.isProduction) return; - if (!message.guild || !message.channel) return; - if (![MessageType.Default, MessageType.Reply].includes(message.type)) return; - if ( - message.author.bot && - message.author.id === '444871677176709141' && //fire - message.content.includes('has been banished from') && - message.content.includes('<:yes:822211477624586260>') - ) - return; - - if ( - (message.content.trim().startsWith(await message.guild.getSetting('prefix')) || - message.content.trim().startsWith(`<@!${client.user!.id}>`) || - message.content.trim().startsWith(`<@${client.user!.id}>`)) && - client.commandHandler.aliases.some((alias) => message.content.includes(alias)) - ) - return; - - if (message.thread) return; - - // todo: make these configurable etc... - if (message.guild.id !== '516977525906341928') return; // mb - if (message.channel.id !== '714332750156660756') return; // neu-support-1 - if (!(message.channel as BushTextChannel).permissionsFor(message.guild.me!).has(PermissionFlagsBits.CreatePublicThreads)) - return; - const thread = await message - .startThread({ - name: `Support - ${message.author.username}#${message.author.discriminator}`, - autoArchiveDuration: 60, - reason: 'Support Thread' - }) - .catch(() => null); - if (!thread) return; - const embed = new Embed() - .setTitle('NotEnoughUpdates Support') - .setDescription( - `Welcome to Moulberry Bush Support:tm:\n\nPlease make sure you have the latest version found in <#693586404256645231>.\nAdditionally if you need help installing the mod be sure to read <#737444942724726915> for a guide on how to do so.` - ) - .setColor(util.colors.Blurple); - void thread - .send({ embeds: [embed] }) - .then(() => - client.console.info( - 'supportThread', - `opened a support thread for <<${message.author.tag}>> in <<${(message.channel as GuildTextBasedChannel).name}>> in <<${ - message.guild!.name - }>>.` - ) - ); - } -} |