aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/listeners/bush/supportThread.ts63
-rw-r--r--src/listeners/message/autoThread.ts65
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
- }>>.`
- )
- );
- }
-}