3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-20 00:05:04 +00:00

Disable mentions in logs, allowing mods to be mentioned

Optionally you can return to old behavior by setting allow_user_mentions to true
This commit is contained in:
Dark 2021-01-12 02:58:42 +01:00
parent f4b13529c6
commit 5a8b308934
No known key found for this signature in database
GPG key ID: 384C4B4F5B1E25A8
5 changed files with 20 additions and 8 deletions

View file

@ -31,7 +31,8 @@ const defaultOptions: PluginOptions<LogsPluginType> = {
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<LogsPluginType> = {
{
level: ">=50",
config: {
ping_user: false,
ping_user: false, // Legacy/deprecated, read comment on global ping_user option
},
},
],

View file

@ -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,
});

View file

@ -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(", ");

View file

@ -103,6 +103,7 @@ export async function log(pluginData: GuildPluginData<LogsPluginType>, 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<LogsPluginType>, 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, 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, cfg.allow_user_mentions).catch(noop);
}
}
}

View file

@ -748,10 +748,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,
allowUserPings: boolean = true,
) {
const chunks = chunkMessageLines(messageText);
for (const chunk of chunks) {
await channel.createMessage(chunk);
await channel.createMessage({ content: chunk, allowedMentions: { users: allowUserPings } });
}
}