From 4011cf74d6b9f2979f14fc5d990aa8825573d91a Mon Sep 17 00:00:00 2001 From: "Ean Milligan (Bastion)" Date: Fri, 21 Apr 2023 02:27:29 -0400 Subject: [PATCH] Add LFG channel cleaning and @mention command --- db/populateDefaults.ts | 1 + src/commandUtils.ts | 16 +++++++++++++++- src/commands/info.ts | 15 ++------------- src/events/messageCreate.ts | 20 ++++++++++++++++++++ 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/db/populateDefaults.ts b/db/populateDefaults.ts index 2588e65..966809d 100644 --- a/db/populateDefaults.ts +++ b/db/populateDefaults.ts @@ -3,6 +3,7 @@ import { dbClient } from '../src/db.ts'; console.log('Attempting to insert default actions into command_cnt'); const actions = [ + 'msg-mention', 'cmd-delete', 'cmd-info', 'cmd-report', diff --git a/src/commandUtils.ts b/src/commandUtils.ts index e6dc7c8..53367f5 100644 --- a/src/commandUtils.ts +++ b/src/commandUtils.ts @@ -1,4 +1,4 @@ -import { ApplicationCommandFlags, Bot, CreateMessage, Interaction, InteractionResponseTypes } from '../deps.ts'; +import { ApplicationCommandFlags, Bot, CreateMessage, Embed, Interaction, InteractionResponseTypes } from '../deps.ts'; import config from '../config.ts'; import { generateGuildSettingKey, lfgChannelSettings } from './db.ts'; import utils from './utils.ts'; @@ -64,3 +64,17 @@ export const sendDirectMessage = async (bot: Bot, userId: bigint, message: Creat // Actually send the DM return bot.helpers.sendMessage(userDmChannel?.id || 0n, message); }; + +// Info Embed Object (for info command and @mention command) +export const infoEmbed: Embed = { + color: infoColor2, + title: `${config.name}, the LFG bot`, + description: `${config.name} is developed by Ean AKA Burn_E99. +Want to check out my source code? Check it out [here](${config.links.sourceCode}). +Need help with this bot? Join my support server [here](${config.links.supportServer}). + +Ran into a bug? Report it to my developers using \`/report [issue description]\`.`, + footer: { + text: `Current Version: ${config.version}`, + }, +}; diff --git a/src/commands/info.ts b/src/commands/info.ts index 12fe25d..a9890ba 100644 --- a/src/commands/info.ts +++ b/src/commands/info.ts @@ -1,6 +1,6 @@ import config from '../../config.ts'; import { ApplicationCommandTypes, Bot, Interaction, InteractionResponseTypes } from '../../deps.ts'; -import { infoColor2, isLFGChannel } from '../commandUtils.ts'; +import { infoEmbed, isLFGChannel } from '../commandUtils.ts'; import { dbClient, queries } from '../db.ts'; import { CommandDetails } from '../types/commandTypes.ts'; import utils from '../utils.ts'; @@ -20,18 +20,7 @@ const execute = (bot: Bot, interaction: Interaction) => { type: InteractionResponseTypes.ChannelMessageWithSource, data: { flags: isLFGChannel(interaction.guildId || 0n, interaction.channelId || 0n), - embeds: [{ - color: infoColor2, - title: `${config.name}, the LFG bot`, - description: `${config.name} is developed by Ean AKA Burn_E99. -Want to check out my source code? Check it out [here](${config.links.sourceCode}). -Need help with this bot? Join my support server [here](${config.links.supportServer}). - -Ran into a bug? Report it to my developers using \`/report [issue description]\`.`, - footer: { - text: `Current Version: ${config.version}`, - }, - }], + embeds: [infoEmbed], }, }, ).catch((e: Error) => utils.commonLoggers.interactionSendError('info.ts', interaction, e)); diff --git a/src/events/messageCreate.ts b/src/events/messageCreate.ts index ebbaf7c..f3e3987 100644 --- a/src/events/messageCreate.ts +++ b/src/events/messageCreate.ts @@ -1,11 +1,31 @@ import config from '../../config.ts'; +import utils from '../utils.ts'; import { Bot, botId, Message } from '../../deps.ts'; +import { infoEmbed } from '../commandUtils.ts'; +import { dbClient, generateGuildSettingKey, lfgChannelSettings, queries } from '../db.ts'; export const messageCreate = async (bot: Bot, message: Message) => { + // Delete all messages sent to a LFG Channel + if (lfgChannelSettings.has(generateGuildSettingKey(message.guildId || 0n, message.channelId))) { + bot.helpers.deleteMessage(message.channelId, message.id, 'Cleaning LFG Channel').catch((e: Error) => utils.commonLoggers.messageDeleteError('messageCreate.ts', 'Clean LFG Channel', e)); + return; + } + // Ignore all messages that are not commands if (message.content.indexOf(config.prefix) !== 0) { // Handle @bot messages if (message.mentionedUserIds[0] === botId && (message.content.trim().startsWith(`<@${botId}>`) || message.content.trim().startsWith(`<@!${botId}>`))) { + dbClient.execute(queries.callIncCnt('msg-mention')).catch((e) => utils.commonLoggers.dbError('info.ts', 'call sproc INC_CNT on', e)); + bot.helpers.sendMessage(message.channelId, { + embeds: [infoEmbed], + messageReference: { + messageId: message.id, + channelId: message.channelId, + guildId: message.guildId, + failIfNotExists: false, + }, + }).catch((e: Error) => utils.commonLoggers.messageSendError('messageCreate.ts', '@mention', e)); + return; } // return as we are done handling this command