diff --git a/backend/src/plugins/Logs/LogsPlugin.ts b/backend/src/plugins/Logs/LogsPlugin.ts index 2ed1e591..3173c507 100644 --- a/backend/src/plugins/Logs/LogsPlugin.ts +++ b/backend/src/plugins/Logs/LogsPlugin.ts @@ -31,7 +31,8 @@ const defaultOptions: PluginOptions = { timestamp: FORMAT_NO_TIMESTAMP, // Legacy/deprecated, use timestamp_format below instead ...DefaultLogMessages, }, - ping_user: true, + ping_user: true, // Legacy/deprecated, if below is false mentions wont actually ping. In case you really want the old behavior, set below to true + allow_user_mentions: false, timestamp_format: "YYYY-MM-DD HH:mm:ss z", include_embed_timestamp: true, }, @@ -40,7 +41,7 @@ const defaultOptions: PluginOptions = { { level: ">=50", config: { - ping_user: false, + ping_user: false, // Legacy/deprecated, read comment on global ping_user option }, }, ], diff --git a/backend/src/plugins/Logs/types.ts b/backend/src/plugins/Logs/types.ts index c44c5d88..34e4b3d9 100644 --- a/backend/src/plugins/Logs/types.ts +++ b/backend/src/plugins/Logs/types.ts @@ -38,7 +38,8 @@ export const ConfigSchema = t.type({ timestamp: t.string, // Legacy/deprecated }), ]), - ping_user: t.boolean, + ping_user: t.boolean, // Legacy/deprecated, if below is false mentions wont actually ping + allow_user_mentions: t.boolean, timestamp_format: t.string, include_embed_timestamp: t.boolean, }); diff --git a/backend/src/plugins/Logs/util/getLogMessage.ts b/backend/src/plugins/Logs/util/getLogMessage.ts index 818acfde..41fc369b 100644 --- a/backend/src/plugins/Logs/util/getLogMessage.ts +++ b/backend/src/plugins/Logs/util/getLogMessage.ts @@ -61,7 +61,12 @@ export async function getLogMessage( const memberConfig = pluginData.config.getMatchingConfig({ member, userId: user.id }) || ({} as any); - mentions.push(memberConfig.ping_user ? verboseUserMention(user) : verboseUserName(user)); + // Revert to old behavior (verbose name w/o ping if allow_user_mentions is enabled (for whatever reason)) + if (config.allow_user_mentions) { + mentions.push(memberConfig.ping_user ? verboseUserMention(user) : verboseUserName(user)); + } else { + mentions.push(verboseUserMention(user)); + } } return mentions.join(", "); diff --git a/backend/src/plugins/Logs/util/log.ts b/backend/src/plugins/Logs/util/log.ts index a2bccba5..aed24f3f 100644 --- a/backend/src/plugins/Logs/util/log.ts +++ b/backend/src/plugins/Logs/util/log.ts @@ -103,6 +103,7 @@ export async function log(pluginData: GuildPluginData, type: Log // Default to batched unless explicitly disabled const batched = opts.batched ?? true; const batchTime = opts.batch_time ?? 1000; + const cfg = pluginData.config.get(); if (batched) { // If we're batching log messages, gather all log messages within the set batch_time into a single message @@ -111,14 +112,14 @@ export async function log(pluginData: GuildPluginData, type: Log setTimeout(async () => { const batchedMessage = pluginData.state.batches.get(channel.id)!.join("\n"); pluginData.state.batches.delete(channel.id); - createChunkedMessage(channel, batchedMessage).catch(noop); + createChunkedMessage(channel, batchedMessage, { users: cfg.allow_user_mentions }).catch(noop); }, batchTime); } pluginData.state.batches.get(channel.id)!.push(message); } else { // If we're not batching log messages, just send them immediately - await createChunkedMessage(channel, message).catch(noop); + await createChunkedMessage(channel, message, { users: cfg.allow_user_mentions }).catch(noop); } } } diff --git a/backend/src/utils.ts b/backend/src/utils.ts index fb7c3c7d..ee9a3033 100644 --- a/backend/src/utils.ts +++ b/backend/src/utils.ts @@ -1,4 +1,5 @@ import { + AllowedMentions, Attachment, Client, Constants, @@ -748,10 +749,14 @@ export function chunkMessageLines(str: string, maxChunkLength = 1990): string[] }); } -export async function createChunkedMessage(channel: TextableChannel, messageText: string) { +export async function createChunkedMessage( + channel: TextableChannel, + messageText: string, + allowedMentions?: AllowedMentions, +) { const chunks = chunkMessageLines(messageText); for (const chunk of chunks) { - await channel.createMessage(chunk); + await channel.createMessage({ content: chunk, allowedMentions }); } }