diff --git a/src/events/discord/messageCreate/AutoResponseEventListener.js b/src/events/discord/messageCreate/AutoResponseEventListener.js index 68cabae70..8fa1010b3 100644 --- a/src/events/discord/messageCreate/AutoResponseEventListener.js +++ b/src/events/discord/messageCreate/AutoResponseEventListener.js @@ -1,6 +1,8 @@ import MessageCreateEventListener from './MessageCreateEventListener.js'; import AutoResponse from '../../../database/AutoResponse.js'; -import {ThreadChannel} from 'discord.js'; +import {RESTJSONErrorCodes, ThreadChannel} from 'discord.js'; +import {MESSAGE_LENGTH_LIMIT} from '../../../util/apiLimits.js'; +import logger from '../../../bot/Logger.js'; export default class AutoResponseEventListener extends MessageCreateEventListener { @@ -20,7 +22,16 @@ export default class AutoResponseEventListener extends MessageCreateEventListene if (triggered.length) { const response = triggered[Math.floor(Math.random() * triggered.length)]; - await message.reply({content: response.response}); + try { + await message.reply({content: response.response.substring(0, MESSAGE_LENGTH_LIMIT)}); + } catch (e) { + if (e.code === RESTJSONErrorCodes.MissingPermissions) { + const channel = /** @type {import('discord.js').GuildTextBasedChannel} */ message.channel; + await logger.warn(`Missing permissions to respond to message in channel ${channel?.name} (${message.channelId}) of guild ${message.guild?.name} (${message.guildId})`, e); + return; + } + throw e; + } } } } \ No newline at end of file diff --git a/src/util/apiLimits.js b/src/util/apiLimits.js index bb94ff213..c0a458f1a 100644 --- a/src/util/apiLimits.js +++ b/src/util/apiLimits.js @@ -96,4 +96,5 @@ export const BULK_DELETE_MAX_AGE = 14 * 24 * 60 * 60 * 1000; */ export const FETCH_BAN_PAGE_SIZE = 1000; -export const MESSAGE_FILE_LIMIT = 10; \ No newline at end of file +export const MESSAGE_FILE_LIMIT = 10; +export const MESSAGE_LENGTH_LIMIT = 2000; \ No newline at end of file