diff --git a/backend/src/pluginUtils.ts b/backend/src/pluginUtils.ts index 9b48f809..fe6c973f 100644 --- a/backend/src/pluginUtils.ts +++ b/backend/src/pluginUtils.ts @@ -2,7 +2,7 @@ * @file Utility functions that are plugin-instance-specific (i.e. use PluginData) */ -import { Member } from "eris"; +import { GuildTextableChannel, Member, Message, TextableChannel } from "eris"; import { CommandContext, configUtils, ConfigValidationError, GuildPluginData, helpers, PluginOptions } from "knub"; import { decodeAndValidateStrict, StrictValidationError, validate } from "./validatorUtils"; import { deepKeyIntersect, errorMessage, successMessage, tDeepPartial, tNullable } from "./utils"; @@ -137,17 +137,30 @@ export function getPluginConfigPreprocessor( }; } -export function sendSuccessMessage(pluginData: AnyPluginData, channel, body) { +export function sendSuccessMessage( + pluginData: AnyPluginData, + channel: TextableChannel, + body: string, +): Promise { const emoji = pluginData.fullConfig.success_emoji || undefined; return channel.createMessage(successMessage(body, emoji)).catch(err => { - logger.warn(`Failed to send success message to ${channel.id} (${channel.guild?.id}): ${err.code} ${err.message}`); + logger.warn( + `Failed to send success message to ${channel.id} (${(channel as GuildTextableChannel).guild?.id}): ${err.code} ${ + err.message + }`, + ); + return undefined; }); } export function sendErrorMessage(pluginData: AnyPluginData, channel, body) { const emoji = pluginData.fullConfig.error_emoji || undefined; return channel.createMessage(errorMessage(body, emoji)).catch(err => { - logger.warn(`Failed to send error message to ${channel.id} (${channel.guild?.id}): ${err.code} ${err.message}`); + logger.warn( + `Failed to send error message to ${channel.id} (${(channel as GuildTextableChannel).guild?.id}): ${err.code} ${ + err.message + }`, + ); }); } diff --git a/backend/src/plugins/Utility/UtilityPlugin.ts b/backend/src/plugins/Utility/UtilityPlugin.ts index bfc08657..41a81d0e 100644 --- a/backend/src/plugins/Utility/UtilityPlugin.ts +++ b/backend/src/plugins/Utility/UtilityPlugin.ts @@ -148,7 +148,7 @@ export const UtilityPlugin = zeppelinGuildPlugin()("utility", state.lastReload = Date.now(); if (activeReloads.has(guild.id)) { - sendSuccessMessage(pluginData, activeReloads.get(guild.id), "Reloaded!"); + sendSuccessMessage(pluginData, activeReloads.get(guild.id)!, "Reloaded!"); activeReloads.delete(guild.id); } }, diff --git a/backend/src/plugins/Utility/commands/CleanCmd.ts b/backend/src/plugins/Utility/commands/CleanCmd.ts index a54964f1..4bb51b42 100644 --- a/backend/src/plugins/Utility/commands/CleanCmd.ts +++ b/backend/src/plugins/Utility/commands/CleanCmd.ts @@ -136,7 +136,7 @@ export const CleanCmd = utilityCmd({ } } - let responseMsg: Message; + let responseMsg: Message | undefined; if (messagesToClean.length > 0) { const cleanResult = await cleanMessages(pluginData, targetChannel, messagesToClean, msg.author); @@ -157,7 +157,7 @@ export const CleanCmd = utilityCmd({ // (so as not to spam the cleaned channel with the command itself) setTimeout(() => { msg.delete().catch(noop); - responseMsg.delete().catch(noop); + responseMsg?.delete().catch(noop); }, CLEAN_COMMAND_DELETE_DELAY); } },