From 77b33c18584b444edbb8c7d4edc682b8d75320a0 Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 16:43:31 +0100 Subject: [PATCH 01/22] renamed ErisError to DiscordJSError, use rateLimit event instead of debug, renamed the TOKEN variable back --- backend/src/{ErisError.ts => DiscordJSError.ts} | 4 ++-- backend/src/index.ts | 17 ++++++----------- 2 files changed, 8 insertions(+), 13 deletions(-) rename backend/src/{ErisError.ts => DiscordJSError.ts} (65%) diff --git a/backend/src/ErisError.ts b/backend/src/DiscordJSError.ts similarity index 65% rename from backend/src/ErisError.ts rename to backend/src/DiscordJSError.ts index 732fa53b..26a3b8ed 100644 --- a/backend/src/ErisError.ts +++ b/backend/src/DiscordJSError.ts @@ -1,6 +1,6 @@ import util from "util"; -export class ErisError extends Error { +export class DiscordJSError extends Error { code: number | string | undefined; shardId: number; @@ -11,6 +11,6 @@ export class ErisError extends Error { } [util.inspect.custom]() { - return `[ERIS] [ERROR CODE ${this.code || "?"}] [SHARD ${this.shardId}] ${this.message}`; + return `[DISCORDJS] [ERROR CODE ${this.code ?? "?"}] [SHARD ${this.shardId}] ${this.message}`; } } diff --git a/backend/src/index.ts b/backend/src/index.ts index 163ba459..70bf4d2e 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,5 +1,4 @@ import { Client, Intents, TextChannel } from "discord.js"; -import fs from "fs"; import yaml from "js-yaml"; import { Knub, PluginError } from "knub"; import { PluginLoadError } from "knub/dist/plugins/PluginLoadError"; @@ -11,7 +10,7 @@ import { Configs } from "./data/Configs"; import { connect } from "./data/db"; import { GuildLogs } from "./data/GuildLogs"; import { LogType } from "./data/LogType"; -import { ErisError } from "./ErisError"; +import { DiscordJSError } from "./DiscordJSError"; import "./loadEnv"; import { logger } from "./logger"; import { baseGuildPlugins, globalPlugins, guildPlugins } from "./plugins/availablePlugins"; @@ -21,8 +20,6 @@ import { ZeppelinGlobalConfig, ZeppelinGuildConfig } from "./types"; import { startUptimeCounter } from "./uptime"; import { errorMessage, isDiscordAPIError, isDiscordHTTPError, successMessage } from "./utils"; -const fsp = fs.promises; - if (!process.env.KEY) { // tslint:disable-next-line:no-console console.error("Project root .env with KEY is required!"); @@ -81,7 +78,7 @@ function errorHandler(err) { return; } - if (err instanceof ErisError) { + if (err instanceof DiscordJSError) { if (err.code && SAFE_TO_IGNORE_ERIS_ERROR_CODES.includes(err.code)) { return; } @@ -176,14 +173,12 @@ connect().then(async () => { }); client.setMaxListeners(200); - client.on("debug", message => { - if (message.includes(" 429 ")) { - logger.info(`[429] ${message}`); - } + client.on("rateLimit", rateLimitData => { + logger.info(`[429] ${rateLimitData}`); }); client.on("error", err => { - errorHandler(new ErisError(err.message, (err as any).code, 0)); + errorHandler(new DiscordJSError(err.message, (err as any).code, 0)); }); const allowedGuilds = new AllowedGuilds(); @@ -266,5 +261,5 @@ connect().then(async () => { bot.initialize(); logger.info("Bot Initialized"); logger.info("Logging in..."); - await client.login(process.env.token); + await client.login(process.env.TOKEN); }); From 88f53b4af9a39bed956ef0895368dda6b951631e Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 22:29:52 +0100 Subject: [PATCH 02/22] removed unnecessary non-null operator --- backend/src/plugins/Automod/events/runAutomodOnMessage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/plugins/Automod/events/runAutomodOnMessage.ts b/backend/src/plugins/Automod/events/runAutomodOnMessage.ts index 34d14a74..7181b257 100644 --- a/backend/src/plugins/Automod/events/runAutomodOnMessage.ts +++ b/backend/src/plugins/Automod/events/runAutomodOnMessage.ts @@ -12,7 +12,7 @@ export function runAutomodOnMessage( message: SavedMessage, isEdit: boolean, ) { - const user = pluginData.client.users.cache!.get(message.user_id as Snowflake); + const user = pluginData.client.users.cache.get(message.user_id as Snowflake); const member = pluginData.guild.members.cache.get(message.user_id as Snowflake); const context: AutomodContext = { From 4047b7f921e4a9d244daf227c5ca20bbdc8292bf Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 23:15:40 +0100 Subject: [PATCH 03/22] removed unnecessary assertion --- .../src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts b/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts index 84e26317..c1b3a871 100644 --- a/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts +++ b/backend/src/plugins/ChannelArchiver/commands/ArchiveChannelCmd.ts @@ -60,10 +60,10 @@ export const ArchiveChannelCmd = channelArchiverCmd({ while (archivedMessages < maxMessagesToArchive) { const messagesToFetch = Math.min(MAX_MESSAGES_PER_FETCH, maxMessagesToArchive - archivedMessages); - const messages = (await args.channel.messages.fetch({ + const messages = await args.channel.messages.fetch({ limit: messagesToFetch, before: previousId as Snowflake, - })) as Collection; + }); if (messages.size === 0) break; for (const message of messages.values()) { From 60caa3153b7d10f4f0f5aea050c1119458b723e4 Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 23:27:07 +0100 Subject: [PATCH 04/22] simplified ternary --- backend/src/plugins/Logs/events/LogsGuildBanEvts.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts b/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts index 7e8d8eb9..580ce85e 100644 --- a/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts +++ b/backend/src/plugins/Logs/events/LogsGuildBanEvts.ts @@ -16,7 +16,7 @@ export const LogsGuildBanAddEvt = logsEvt({ GuildAuditLogs.Actions.MEMBER_BAN_ADD as number, user.id, ); - const mod = relevantAuditLogEntry ? relevantAuditLogEntry.executor : null; + const mod = relevantAuditLogEntry?.executor ?? null; pluginData.state.guildLogs.log( LogType.MEMBER_BAN, @@ -41,7 +41,7 @@ export const LogsGuildBanRemoveEvt = logsEvt({ GuildAuditLogs.Actions.MEMBER_BAN_REMOVE as number, user.id, ); - const mod = relevantAuditLogEntry ? relevantAuditLogEntry.executor : null; + const mod = relevantAuditLogEntry?.executor ?? null; pluginData.state.guildLogs.log( LogType.MEMBER_UNBAN, From b4ba1daa762256e879f86aefa827e67e61f03df9 Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 23:30:52 +0100 Subject: [PATCH 05/22] simplify --- backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts | 10 +++++----- .../ModActions/events/CreateBanCaseOnManualBanEvt.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts b/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts index 5b29e3f0..1f37a360 100644 --- a/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts +++ b/backend/src/plugins/Logs/events/LogsUserUpdateEvts.ts @@ -52,7 +52,7 @@ export const LogsGuildMemberUpdateEvt = logsEvt({ GuildAuditLogs.Actions.MEMBER_ROLE_UPDATE as number, member.id, ); - const mod = relevantAuditLogEntry ? relevantAuditLogEntry.executor : null; + const mod = relevantAuditLogEntry?.executor ?? null; if (addedRoles.length && removedRoles.length) { // Roles added *and* removed @@ -61,11 +61,11 @@ export const LogsGuildMemberUpdateEvt = logsEvt({ { member: logMember, addedRoles: addedRoles - .map(roleId => pluginData.guild.roles.cache.get(roleId) || { id: roleId, name: `Unknown (${roleId})` }) + .map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` }) .map(r => r.name) .join(", "), removedRoles: removedRoles - .map(roleId => pluginData.guild.roles.cache.get(roleId) || { id: roleId, name: `Unknown (${roleId})` }) + .map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` }) .map(r => r.name) .join(", "), mod: mod ? userToConfigAccessibleUser(mod) : {}, @@ -79,7 +79,7 @@ export const LogsGuildMemberUpdateEvt = logsEvt({ { member: logMember, roles: addedRoles - .map(roleId => pluginData.guild.roles.cache.get(roleId) || { id: roleId, name: `Unknown (${roleId})` }) + .map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` }) .map(r => r.name) .join(", "), mod: mod ? userToConfigAccessibleUser(mod) : {}, @@ -93,7 +93,7 @@ export const LogsGuildMemberUpdateEvt = logsEvt({ { member: logMember, roles: removedRoles - .map(roleId => pluginData.guild.roles.cache.get(roleId) || { id: roleId, name: `Unknown (${roleId})` }) + .map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` }) .map(r => r.name) .join(", "), mod: mod ? userToConfigAccessibleUser(mod) : {}, diff --git a/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts b/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts index 57790912..875f8cd7 100644 --- a/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts +++ b/backend/src/plugins/ModActions/events/CreateBanCaseOnManualBanEvt.ts @@ -44,7 +44,7 @@ export const CreateBanCaseOnManualBanEvt = modActionsEvt({ const config = mod instanceof UnknownUser ? pluginData.config.get() : await pluginData.config.getForUser(mod); if (config.create_cases_for_manual_actions) { - reason = relevantAuditLogEntry.reason || ""; + reason = relevantAuditLogEntry.reason ?? ""; createdCase = await casesPlugin.createCase({ userId: user.id, modId, From f9e134300301f670b2a5bad3d468333130bfbe4a Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 23:40:20 +0100 Subject: [PATCH 06/22] use User#displayAvatarURL and dont encode reason --- backend/src/plugins/ModActions/commands/CasesModCmd.ts | 2 +- backend/src/plugins/ModActions/commands/CasesUserCmd.ts | 2 +- backend/src/plugins/ModActions/commands/ForcebanCmd.ts | 2 +- backend/src/plugins/ModActions/commands/UnbanCmd.ts | 2 +- backend/src/plugins/ModActions/functions/banUserId.ts | 2 +- backend/src/plugins/ModActions/functions/kickMember.ts | 2 +- .../src/plugins/ModActions/functions/outdatedTempbansLoop.ts | 5 +---- backend/src/plugins/Utility/commands/AvatarCmd.ts | 2 +- backend/src/plugins/Utility/functions/getUserInfoEmbed.ts | 2 +- 9 files changed, 9 insertions(+), 12 deletions(-) diff --git a/backend/src/plugins/ModActions/commands/CasesModCmd.ts b/backend/src/plugins/ModActions/commands/CasesModCmd.ts index 6b06c56c..9569e859 100644 --- a/backend/src/plugins/ModActions/commands/CasesModCmd.ts +++ b/backend/src/plugins/ModActions/commands/CasesModCmd.ts @@ -57,7 +57,7 @@ export const CasesModCmd = modActionsCmd({ const embed: MessageEmbedOptions = { author: { name: title, - iconURL: mod instanceof User ? mod.avatarURL() || mod.defaultAvatarURL : undefined, + iconURL: mod instanceof User ? mod.displayAvatarURL() : undefined, }, fields: [ ...getChunkedEmbedFields(emptyEmbedValue, lines.join("\n")), diff --git a/backend/src/plugins/ModActions/commands/CasesUserCmd.ts b/backend/src/plugins/ModActions/commands/CasesUserCmd.ts index ac1d2eb5..f551369f 100644 --- a/backend/src/plugins/ModActions/commands/CasesUserCmd.ts +++ b/backend/src/plugins/ModActions/commands/CasesUserCmd.ts @@ -119,7 +119,7 @@ export const CasesUserCmd = modActionsCmd({ lineChunks.length === 1 ? `Cases for ${userName} (${lines.length} total)` : `Cases ${chunkStart}–${chunkEnd} of ${lines.length} for ${userName}`, - icon_url: user instanceof User ? user.avatarURL() || user.defaultAvatarURL : undefined, + icon_url: user instanceof User ? user.displayAvatarURL() : undefined, }, fields: [ ...getChunkedEmbedFields(emptyEmbedValue, linesInChunk.join("\n")), diff --git a/backend/src/plugins/ModActions/commands/ForcebanCmd.ts b/backend/src/plugins/ModActions/commands/ForcebanCmd.ts index b7ff84da..67df9ece 100644 --- a/backend/src/plugins/ModActions/commands/ForcebanCmd.ts +++ b/backend/src/plugins/ModActions/commands/ForcebanCmd.ts @@ -70,7 +70,7 @@ export const ForcebanCmd = modActionsCmd({ // FIXME: Use banUserId()? await pluginData.guild.bans.create(user.id as Snowflake, { days: 1, - reason: reason != null ? encodeURIComponent(reason) : undefined, + reason: reason ?? undefined, }); } catch { sendErrorMessage(pluginData, msg.channel, "Failed to forceban member"); diff --git a/backend/src/plugins/ModActions/commands/UnbanCmd.ts b/backend/src/plugins/ModActions/commands/UnbanCmd.ts index e425ddee..38bb49f0 100644 --- a/backend/src/plugins/ModActions/commands/UnbanCmd.ts +++ b/backend/src/plugins/ModActions/commands/UnbanCmd.ts @@ -51,7 +51,7 @@ export const UnbanCmd = modActionsCmd({ try { ignoreEvent(pluginData, IgnoredEventType.Unban, user.id); - await pluginData.guild.bans.remove(user.id as Snowflake, reason != null ? encodeURIComponent(reason) : undefined); + await pluginData.guild.bans.remove(user.id as Snowflake, reason ?? undefined); } catch { sendErrorMessage(pluginData, msg.channel, "Failed to unban member; are you sure they're banned?"); return; diff --git a/backend/src/plugins/ModActions/functions/banUserId.ts b/backend/src/plugins/ModActions/functions/banUserId.ts index 25613f7d..3462842d 100644 --- a/backend/src/plugins/ModActions/functions/banUserId.ts +++ b/backend/src/plugins/ModActions/functions/banUserId.ts @@ -80,7 +80,7 @@ export async function banUserId( const deleteMessageDays = Math.min(30, Math.max(0, banOptions.deleteMessageDays ?? 1)); await pluginData.guild.bans.create(userId as Snowflake, { days: deleteMessageDays, - reason: reason != null ? encodeURIComponent(reason) : undefined, + reason: reason ?? undefined, }); } catch (e) { let errorMessage; diff --git a/backend/src/plugins/ModActions/functions/kickMember.ts b/backend/src/plugins/ModActions/functions/kickMember.ts index 5aa3d853..3ffcab6b 100644 --- a/backend/src/plugins/ModActions/functions/kickMember.ts +++ b/backend/src/plugins/ModActions/functions/kickMember.ts @@ -49,7 +49,7 @@ export async function kickMember( pluginData.state.serverLogs.ignoreLog(LogType.MEMBER_KICK, member.id); ignoreEvent(pluginData, IgnoredEventType.Kick, member.id); try { - await member.kick(reason != null ? encodeURIComponent(reason) : undefined); + await member.kick(reason ?? undefined); } catch (e) { return { status: "failed", diff --git a/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts b/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts index fdf957ea..935e16a4 100644 --- a/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts +++ b/backend/src/plugins/ModActions/functions/outdatedTempbansLoop.ts @@ -32,10 +32,7 @@ export async function outdatedTempbansLoop(pluginData: GuildPluginData Date: Wed, 28 Jul 2021 23:50:25 +0100 Subject: [PATCH 07/22] removed unnecessary encodeURIComponent on reasons --- backend/src/plugins/ModActions/commands/MassBanCmd.ts | 2 +- backend/src/plugins/ModActions/commands/MassUnbanCmd.ts | 5 +---- .../src/plugins/ModActions/functions/actualKickMemberCmd.ts | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/backend/src/plugins/ModActions/commands/MassBanCmd.ts b/backend/src/plugins/ModActions/commands/MassBanCmd.ts index 899d8ca3..7e61bb48 100644 --- a/backend/src/plugins/ModActions/commands/MassBanCmd.ts +++ b/backend/src/plugins/ModActions/commands/MassBanCmd.ts @@ -95,7 +95,7 @@ export const MassbanCmd = modActionsCmd({ await pluginData.guild.bans.create(userId as Snowflake, { days: deleteDays, - reason: banReason != null ? encodeURIComponent(banReason) : undefined, + reason: banReason ?? undefined, }); await casesPlugin.createCase({ diff --git a/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts b/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts index 059f85a7..1141c26c 100644 --- a/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts +++ b/backend/src/plugins/ModActions/commands/MassUnbanCmd.ts @@ -60,10 +60,7 @@ export const MassunbanCmd = modActionsCmd({ } try { - await pluginData.guild.bans.remove( - userId as Snowflake, - unbanReason != null ? encodeURIComponent(unbanReason) : undefined, - ); + await pluginData.guild.bans.remove(userId as Snowflake, unbanReason ?? undefined); await casesPlugin.createCase({ userId, diff --git a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts index a957696c..0ed86ded 100644 --- a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts +++ b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts @@ -82,7 +82,7 @@ export async function actualKickMemberCmd( ignoreEvent(pluginData, IgnoredEventType.Ban, memberToKick.id); try { - await memberToKick.ban({ days: 1, reason: encodeURIComponent("kick -clean") }); + await memberToKick.ban({ days: 1, reason: "kick -clean" }); } catch { sendErrorMessage(pluginData, msg.channel, "Failed to ban the user to clean messages (-clean)"); } @@ -91,7 +91,7 @@ export async function actualKickMemberCmd( ignoreEvent(pluginData, IgnoredEventType.Unban, memberToKick.id); try { - await pluginData.guild.bans.remove(memberToKick.id, encodeURIComponent("kick -clean")); + await pluginData.guild.bans.remove(memberToKick.id, "kick -clean"); } catch { sendErrorMessage(pluginData, msg.channel, "Failed to unban the user after banning them (-clean)"); } From d9d1793e5907cba16e2153ebec0d515dce16f0a2 Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 23:54:34 +0100 Subject: [PATCH 08/22] removed unnecessary type annotation --- backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts b/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts index 77fc0f85..ad5b9666 100644 --- a/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts +++ b/backend/src/plugins/Mutes/commands/ClearBannedMutesCmd.ts @@ -12,7 +12,7 @@ export const ClearBannedMutesCmd = mutesCmd({ const activeMutes = await pluginData.state.mutes.getActiveMutes(); - const bans: Array<{ reason: string; user: User }> = (await pluginData.guild.bans.fetch({ cache: true })) as any; + const bans = await pluginData.guild.bans.fetch({ cache: true }); const bannedIds = bans.map(b => b.user.id); await msg.channel.send(`Found ${activeMutes.length} mutes and ${bannedIds.length} bans, cross-referencing...`); From 9ddfc48bb2fb98d5586fdef3bb777aa0612267d6 Mon Sep 17 00:00:00 2001 From: almeidx Date: Wed, 28 Jul 2021 23:57:29 +0100 Subject: [PATCH 09/22] simplify --- backend/src/plugins/Mutes/commands/MutesCmd.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/backend/src/plugins/Mutes/commands/MutesCmd.ts b/backend/src/plugins/Mutes/commands/MutesCmd.ts index 74e2dc84..27b33523 100644 --- a/backend/src/plugins/Mutes/commands/MutesCmd.ts +++ b/backend/src/plugins/Mutes/commands/MutesCmd.ts @@ -225,14 +225,11 @@ export const MutesCmd = mutesCmd({ interaction.reply({ content: `You are not permitted to use these buttons.`, ephemeral: true }); } else { collector.resetTimer(); + await interaction.deferUpdate(); if (interaction.customId === `previousButton:${idMod}` && currentPage > 1) { - await interaction.deferUpdate(); await drawListPage(currentPage - 1); } else if (interaction.customId === `nextButton:${idMod}` && currentPage < totalPages) { - await interaction.deferUpdate(); await drawListPage(currentPage + 1); - } else { - await interaction.deferUpdate(); } } }); From 3d29963b871eb4081bf8202d45b8395ff253cda1 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 00:03:25 +0100 Subject: [PATCH 10/22] perf --- backend/src/plugins/Mutes/functions/muteUser.ts | 2 +- backend/src/plugins/NameHistory/events/UpdateNameEvts.ts | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/backend/src/plugins/Mutes/functions/muteUser.ts b/backend/src/plugins/Mutes/functions/muteUser.ts index 78d0e4bd..cbfa3870 100644 --- a/backend/src/plugins/Mutes/functions/muteUser.ts +++ b/backend/src/plugins/Mutes/functions/muteUser.ts @@ -90,7 +90,7 @@ export async function muteUser( try { await member.roles.add(muteRole as Snowflake); } catch (e) { - const actualMuteRole = pluginData.guild.roles.cache.find(x => x.id === muteRole); + const actualMuteRole = pluginData.guild.roles.cache.get(muteRole as Snowflake); if (!actualMuteRole) { lock.unlock(); logs.log(LogType.BOT_ALERT, { diff --git a/backend/src/plugins/NameHistory/events/UpdateNameEvts.ts b/backend/src/plugins/NameHistory/events/UpdateNameEvts.ts index c41e2cc9..0d644663 100644 --- a/backend/src/plugins/NameHistory/events/UpdateNameEvts.ts +++ b/backend/src/plugins/NameHistory/events/UpdateNameEvts.ts @@ -6,10 +6,7 @@ export const ChannelJoinEvt = nameHistoryEvt({ async listener(meta) { meta.pluginData.state.updateQueue.add(() => - updateNickname( - meta.pluginData, - meta.args.newState.member ? meta.args.newState.member : meta.args.oldState.member!, - ), + updateNickname(meta.pluginData, meta.args.newState.member ?? meta.args.oldState.member!), ); }, }); From 74a676913ee781df2ef0ce856aa12987dd835832 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 00:37:19 +0100 Subject: [PATCH 11/22] user.tag --- backend/src/plugins/Automod/triggers/roleAdded.ts | 2 +- .../src/plugins/Automod/triggers/roleRemoved.ts | 2 +- .../BotControl/commands/AddDashboardUserCmd.ts | 4 +--- .../BotControl/commands/ListDashboardPermsCmd.ts | 6 ++---- .../BotControl/commands/ListDashboardUsersCmd.ts | 4 +--- .../BotControl/commands/RemoveDashboardUserCmd.ts | 4 +--- .../src/plugins/BotControl/commands/ServersCmd.ts | 2 +- backend/src/plugins/Cases/functions/createCase.ts | 6 +++--- .../src/plugins/Cases/functions/createCaseNote.ts | 2 +- .../src/plugins/ModActions/commands/AddCaseCmd.ts | 6 +----- backend/src/plugins/ModActions/commands/BanCmd.ts | 2 +- .../src/plugins/ModActions/commands/CasesModCmd.ts | 2 +- .../plugins/ModActions/commands/CasesUserCmd.ts | 5 +---- .../plugins/ModActions/commands/DeleteCaseCmd.ts | 2 +- backend/src/plugins/ModActions/commands/NoteCmd.ts | 2 +- backend/src/plugins/ModActions/commands/WarnCmd.ts | 2 +- .../ModActions/events/PostAlertOnMemberJoinEvt.ts | 2 +- .../ModActions/functions/actualKickMemberCmd.ts | 2 +- .../ModActions/functions/actualMuteUserCmd.ts | 8 ++++---- .../ModActions/functions/actualUnmuteUserCmd.ts | 4 ++-- backend/src/plugins/Mutes/commands/MutesCmd.ts | 4 ++-- .../src/plugins/NameHistory/commands/NamesCmd.ts | 2 +- backend/src/plugins/Post/util/actualPostCmd.ts | 2 +- .../util/addMemberPendingRoleChange.ts | 4 +--- .../plugins/Slowmode/commands/SlowmodeClearCmd.ts | 10 +++------- .../util/createStarboardEmbedFromMessage.ts | 2 +- .../src/plugins/UsernameSaver/updateUsername.ts | 2 +- backend/src/plugins/Utility/commands/AvatarCmd.ts | 2 +- backend/src/plugins/Utility/commands/LevelCmd.ts | 4 +--- .../plugins/Utility/commands/VcdisconnectCmd.ts | 6 +----- backend/src/plugins/Utility/commands/VcmoveCmd.ts | 14 +++----------- .../Utility/functions/getInviteInfoEmbed.ts | 4 ++-- .../Utility/functions/getMessageInfoEmbed.ts | 2 +- .../Utility/functions/getServerInfoEmbed.ts | 2 +- .../plugins/Utility/functions/getUserInfoEmbed.ts | 4 ++-- backend/src/plugins/Utility/search.ts | 8 ++++---- backend/src/utils.ts | 9 +++++---- backend/src/utils/configAccessibleObjects.ts | 2 +- 38 files changed, 59 insertions(+), 93 deletions(-) diff --git a/backend/src/plugins/Automod/triggers/roleAdded.ts b/backend/src/plugins/Automod/triggers/roleAdded.ts index d3fd0cf9..387f4d9b 100644 --- a/backend/src/plugins/Automod/triggers/roleAdded.ts +++ b/backend/src/plugins/Automod/triggers/roleAdded.ts @@ -37,7 +37,7 @@ export const RoleAddedTrigger = automodTrigger()({ const role = pluginData.guild.roles.cache.get(matchResult.extra.matchedRoleId as Snowflake); const roleName = role?.name || "Unknown"; const member = contexts[0].member!; - const memberName = `**${member.user.username}#${member.user.discriminator}** (\`${member.id}\`)`; + const memberName = `**${member.user.tag}** (\`${member.id}\`)`; return `Role ${roleName} (\`${matchResult.extra.matchedRoleId}\`) was added to ${memberName}`; }, }); diff --git a/backend/src/plugins/Automod/triggers/roleRemoved.ts b/backend/src/plugins/Automod/triggers/roleRemoved.ts index 45360086..46b68376 100644 --- a/backend/src/plugins/Automod/triggers/roleRemoved.ts +++ b/backend/src/plugins/Automod/triggers/roleRemoved.ts @@ -37,7 +37,7 @@ export const RoleRemovedTrigger = automodTrigger()({ const role = pluginData.guild.roles.cache.get(matchResult.extra.matchedRoleId as Snowflake); const roleName = role?.name || "Unknown"; const member = contexts[0].member!; - const memberName = `**${member.user.username}#${member.user.discriminator}** (\`${member.id}\`)`; + const memberName = `**${member.user.tag}** (\`${member.id}\`)`; return `Role ${roleName} (\`${matchResult.extra.matchedRoleId}\`) was removed from ${memberName}`; }, }); diff --git a/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts b/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts index 156606da..84cce432 100644 --- a/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts +++ b/backend/src/plugins/BotControl/commands/AddDashboardUserCmd.ts @@ -35,9 +35,7 @@ export const AddDashboardUserCmd = botControlCmd({ await pluginData.state.apiPermissionAssignments.addUser(args.guildId, user.id, [ApiPermissions.EditConfig]); } - const userNameList = args.users.map( - user => `<@!${user.id}> (**${user.username}#${user.discriminator}**, \`${user.id}\`)`, - ); + const userNameList = args.users.map(user => `<@!${user.id}> (**${user.tag}**, \`${user.id}\`)`); sendSuccessMessage( pluginData, msg.channel as TextChannel, diff --git a/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts b/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts index d9310906..4a8a609c 100644 --- a/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts +++ b/backend/src/plugins/BotControl/commands/ListDashboardPermsCmd.ts @@ -46,7 +46,7 @@ export const ListDashboardPermsCmd = botControlCmd({ // If we have user, always display which guilds they have permissions in (or only specified guild permissions) if (args.user) { - const userInfo = `**${args.user.username}#${args.user.discriminator}** (\`${args.user.id}\`)`; + const userInfo = `**${args.user.tag}** (\`${args.user.id}\`)`; for (const assignment of existingUserAssignment!) { if (guild != null && assignment.guild_id !== args.guildId) continue; @@ -82,9 +82,7 @@ export const ListDashboardPermsCmd = botControlCmd({ finalMessage += `The server ${guildInfo} has the following assigned permissions:\n`; // Double \n for consistency with AddDashboardUserCmd for (const assignment of existingGuildAssignment) { const user = await resolveUser(pluginData.client, assignment.target_id); - finalMessage += `\n**${user.username}#${user.discriminator}**, \`${ - assignment.target_id - }\`: ${assignment.permissions.join(", ")}`; + finalMessage += `\n**${user.tag}**, \`${assignment.target_id}\`: ${assignment.permissions.join(", ")}`; } } diff --git a/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts b/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts index 81e58fb7..52c3083f 100644 --- a/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts +++ b/backend/src/plugins/BotControl/commands/ListDashboardUsersCmd.ts @@ -24,9 +24,7 @@ export const ListDashboardUsersCmd = botControlCmd({ const dashboardUsers = await pluginData.state.apiPermissionAssignments.getByGuildId(guild.id); const users = await Promise.all(dashboardUsers.map(perm => resolveUser(pluginData.client, perm.target_id))); - const userNameList = users.map( - user => `<@!${user.id}> (**${user.username}#${user.discriminator}**, \`${user.id}\`)`, - ); + const userNameList = users.map(user => `<@!${user.id}> (**${user.tag}**, \`${user.id}\`)`); sendSuccessMessage( pluginData, diff --git a/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts b/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts index 75085491..3dfafb42 100644 --- a/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts +++ b/backend/src/plugins/BotControl/commands/RemoveDashboardUserCmd.ts @@ -34,9 +34,7 @@ export const RemoveDashboardUserCmd = botControlCmd({ await pluginData.state.apiPermissionAssignments.removeUser(args.guildId, user.id); } - const userNameList = args.users.map( - user => `<@!${user.id}> (**${user.username}#${user.discriminator}**, \`${user.id}\`)`, - ); + const userNameList = args.users.map(user => `<@!${user.id}> (**${user.tag}**, \`${user.id}\`)`); sendSuccessMessage( pluginData, msg.channel as TextChannel, diff --git a/backend/src/plugins/BotControl/commands/ServersCmd.ts b/backend/src/plugins/BotControl/commands/ServersCmd.ts index 39938e3a..d226e14c 100644 --- a/backend/src/plugins/BotControl/commands/ServersCmd.ts +++ b/backend/src/plugins/BotControl/commands/ServersCmd.ts @@ -49,7 +49,7 @@ export const ServersCmd = botControlCmd({ const lines = filteredGuilds.map(g => { const paddedId = g.id.padEnd(longestId, " "); const owner = getUser(pluginData.client, g.ownerId); - return `\`${paddedId}\` **${g.name}** (${g.memberCount} members) (owner **${owner.username}#${owner.discriminator}** \`${owner.id}\`)`; + return `\`${paddedId}\` **${g.name}** (${g.memberCount} members) (owner **${owner.tag}** \`${owner.id}\`)`; }); createChunkedMessage(msg.channel as TextChannel, lines.join("\n")); } else { diff --git a/backend/src/plugins/Cases/functions/createCase.ts b/backend/src/plugins/Cases/functions/createCase.ts index 0d66c71e..5a03c1c2 100644 --- a/backend/src/plugins/Cases/functions/createCase.ts +++ b/backend/src/plugins/Cases/functions/createCase.ts @@ -7,15 +7,15 @@ import { postCaseToCaseLogChannel } from "./postToCaseLogChannel"; export async function createCase(pluginData: GuildPluginData, args: CaseArgs) { const user = await resolveUser(pluginData.client, args.userId); - const userName = `${user.username}#${user.discriminator}`; + const userName = `${user.tag}`; const mod = await resolveUser(pluginData.client, args.modId); - const modName = `${mod.username}#${mod.discriminator}`; + const modName = `${mod.tag}`; let ppName: string | null = null; if (args.ppId) { const pp = await resolveUser(pluginData.client, args.ppId); - ppName = `${pp.username}#${pp.discriminator}`; + ppName = `${pp.tag}`; } if (args.auditLogId) { diff --git a/backend/src/plugins/Cases/functions/createCaseNote.ts b/backend/src/plugins/Cases/functions/createCaseNote.ts index ed95e7a7..2f9d801c 100644 --- a/backend/src/plugins/Cases/functions/createCaseNote.ts +++ b/backend/src/plugins/Cases/functions/createCaseNote.ts @@ -16,7 +16,7 @@ export async function createCaseNote(pluginData: GuildPluginData !c.is_hidden); const hiddenCases = cases.filter(c => c.is_hidden); - const userName = - user instanceof UnknownUser && cases.length - ? cases[cases.length - 1].user_name - : `${user.username}#${user.discriminator}`; + const userName = user instanceof UnknownUser && cases.length ? cases[cases.length - 1].user_name : `${user.tag}`; if (cases.length === 0) { msg.channel.send(`No cases found for **${userName}**`); diff --git a/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts b/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts index 09fbb8d0..b783fbbd 100644 --- a/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts +++ b/backend/src/plugins/ModActions/commands/DeleteCaseCmd.ts @@ -68,7 +68,7 @@ export const DeleteCaseCmd = modActionsCmd({ } } - const deletedByName = `${message.author.username}#${message.author.discriminator}`; + const deletedByName = `${message.author.tag}`; const timeAndDate = pluginData.getPlugin(TimeAndDatePlugin); const deletedAt = timeAndDate.inGuildTz().format(timeAndDate.getDateFormat("pretty_datetime")); diff --git a/backend/src/plugins/ModActions/commands/NoteCmd.ts b/backend/src/plugins/ModActions/commands/NoteCmd.ts index efdb5adc..0fbd1dbd 100644 --- a/backend/src/plugins/ModActions/commands/NoteCmd.ts +++ b/backend/src/plugins/ModActions/commands/NoteCmd.ts @@ -30,7 +30,7 @@ export const NoteCmd = modActionsCmd({ return; } - const userName = `${user.username}#${user.discriminator}`; + const userName = `${user.tag}`; const reason = formatReasonWithAttachments(args.note, msg.attachments.array()); const casesPlugin = pluginData.getPlugin(CasesPlugin); diff --git a/backend/src/plugins/ModActions/commands/WarnCmd.ts b/backend/src/plugins/ModActions/commands/WarnCmd.ts index f85e1bdb..d06f91b8 100644 --- a/backend/src/plugins/ModActions/commands/WarnCmd.ts +++ b/backend/src/plugins/ModActions/commands/WarnCmd.ts @@ -107,7 +107,7 @@ export const WarnCmd = modActionsCmd({ sendSuccessMessage( pluginData, msg.channel, - `Warned **${memberToWarn.user.username}#${memberToWarn.user.discriminator}** (Case #${warnResult.case.case_number})${messageResultText}`, + `Warned **${memberToWarn.user.tag}** (Case #${warnResult.case.case_number})${messageResultText}`, ); }, }); diff --git a/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts b/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts index b8925aa1..136e41cc 100644 --- a/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts +++ b/backend/src/plugins/ModActions/events/PostAlertOnMemberJoinEvt.ts @@ -47,7 +47,7 @@ export const PostAlertOnMemberJoinEvt = modActionsEvt({ } await alertChannel.send( - `<@!${member.id}> (${member.user.username}#${member.user.discriminator} \`${member.id}\`) joined with ${actions.length} prior record(s)`, + `<@!${member.id}> (${member.user.tag} \`${member.id}\`) joined with ${actions.length} prior record(s)`, ); } }, diff --git a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts index 0ed86ded..92178edc 100644 --- a/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts +++ b/backend/src/plugins/ModActions/functions/actualKickMemberCmd.ts @@ -103,7 +103,7 @@ export async function actualKickMemberCmd( } // Confirm the action to the moderator - let response = `Kicked **${memberToKick.user.username}#${memberToKick.user.discriminator}** (Case #${kickResult.case.case_number})`; + let response = `Kicked **${memberToKick.user.tag}** (Case #${kickResult.case.case_number})`; if (kickResult.notifyResult.text) response += ` (${kickResult.notifyResult.text})`; sendSuccessMessage(pluginData, msg.channel, response); diff --git a/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts b/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts index 4dc16209..64fd30df 100644 --- a/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts +++ b/backend/src/plugins/ModActions/functions/actualMuteUserCmd.ts @@ -85,24 +85,24 @@ export async function actualMuteUserCmd( if (args.time) { if (muteResult.updatedExistingMute) { response = asSingleLine(` - Updated **${user.username}#${user.discriminator}**'s + Updated **${user.tag}**'s mute to ${timeUntilUnmute} (Case #${muteResult.case.case_number}) `); } else { response = asSingleLine(` - Muted **${user.username}#${user.discriminator}** + Muted **${user.tag}** for ${timeUntilUnmute} (Case #${muteResult.case.case_number}) `); } } else { if (muteResult.updatedExistingMute) { response = asSingleLine(` - Updated **${user.username}#${user.discriminator}**'s + Updated **${user.tag}**'s mute to indefinite (Case #${muteResult.case.case_number}) `); } else { response = asSingleLine(` - Muted **${user.username}#${user.discriminator}** + Muted **${user.tag}** indefinitely (Case #${muteResult.case.case_number}) `); } diff --git a/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts b/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts index 9f95b417..fb7465c7 100644 --- a/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts +++ b/backend/src/plugins/ModActions/functions/actualUnmuteUserCmd.ts @@ -48,7 +48,7 @@ export async function actualUnmuteCmd( pluginData, msg.channel as TextChannel, asSingleLine(` - Unmuting **${user.username}#${user.discriminator}** + Unmuting **${user.tag}** in ${timeUntilUnmute} (Case #${result.case.case_number}) `), ); @@ -57,7 +57,7 @@ export async function actualUnmuteCmd( pluginData, msg.channel as TextChannel, asSingleLine(` - Unmuted **${user.username}#${user.discriminator}** + Unmuted **${user.tag}** (Case #${result.case.case_number}) `), ); diff --git a/backend/src/plugins/Mutes/commands/MutesCmd.ts b/backend/src/plugins/Mutes/commands/MutesCmd.ts index 27b33523..4ee88e74 100644 --- a/backend/src/plugins/Mutes/commands/MutesCmd.ts +++ b/backend/src/plugins/Mutes/commands/MutesCmd.ts @@ -67,7 +67,7 @@ export const MutesCmd = mutesCmd({ totalMutes = manuallyMutedMembers.length; lines = manuallyMutedMembers.map(member => { - return `<@!${member.id}> (**${member.user.username}#${member.user.discriminator}**, \`${member.id}\`) 🔧 Manual mute`; + return `<@!${member.id}> (**${member.user.tag}**, \`${member.id}\`) 🔧 Manual mute`; }); } else { // Show filtered active mutes (but not manual mutes) @@ -119,7 +119,7 @@ export const MutesCmd = mutesCmd({ lines = filteredMutes.map(mute => { const user = pluginData.client.users.resolve(mute.user_id as Snowflake); - const username = user ? `${user.username}#${user.discriminator}` : "Unknown#0000"; + const username = user ? `${user.tag}` : "Unknown#0000"; const theCase = muteCasesById.get(mute.case_id); const caseName = theCase ? `Case #${theCase.case_number}` : "No case"; diff --git a/backend/src/plugins/NameHistory/commands/NamesCmd.ts b/backend/src/plugins/NameHistory/commands/NamesCmd.ts index f2a7348a..0ee42166 100644 --- a/backend/src/plugins/NameHistory/commands/NamesCmd.ts +++ b/backend/src/plugins/NameHistory/commands/NamesCmd.ts @@ -31,7 +31,7 @@ export const NamesCmd = nameHistoryCmd({ const usernameRows = usernames.map(r => `\`[${r.timestamp}]\` **${disableCodeBlocks(r.username)}**`); const user = await pluginData.client.users.fetch(args.userId as Snowflake); - const currentUsername = user ? `${user.username}#${user.discriminator}` : args.userId; + const currentUsername = user ? `${user.tag}` : args.userId; const nicknameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS); const usernameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS); diff --git a/backend/src/plugins/Post/util/actualPostCmd.ts b/backend/src/plugins/Post/util/actualPostCmd.ts index 88135f38..db8f51a4 100644 --- a/backend/src/plugins/Post/util/actualPostCmd.ts +++ b/backend/src/plugins/Post/util/actualPostCmd.ts @@ -138,7 +138,7 @@ export async function actualPostCmd( await pluginData.state.scheduledPosts.create({ author_id: msg.author.id, - author_name: `${msg.author.username}#${msg.author.discriminator}`, + author_name: `${msg.author.tag}`, channel_id: targetChannel.id, content, attachments: msg.attachments.array(), diff --git a/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts b/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts index 41ec5710..f4e4bfcb 100644 --- a/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts +++ b/backend/src/plugins/ReactionRoles/util/addMemberPendingRoleChange.ts @@ -38,9 +38,7 @@ export async function addMemberPendingRoleChange( "Reaction roles", ); } catch (e) { - logger.warn( - `Failed to apply role changes to ${member.user.username}#${member.user.discriminator} (${member.id}): ${e.message}`, - ); + logger.warn(`Failed to apply role changes to ${member.user.tag} (${member.id}): ${e.message}`); } } lock.unlock(); diff --git a/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts b/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts index 3f67b710..75835e6b 100644 --- a/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts +++ b/backend/src/plugins/Slowmode/commands/SlowmodeClearCmd.ts @@ -45,7 +45,7 @@ export const SlowmodeClearCmd = slowmodeCmd({ pluginData, msg.channel, asSingleLine(` - Failed to clear slowmode from **${args.user.username}#${args.user.discriminator}** in <#${args.channel.id}>: + Failed to clear slowmode from **${args.user.tag}** in <#${args.channel.id}>: Threads cannot have Bot Slowmode `), ); @@ -56,17 +56,13 @@ export const SlowmodeClearCmd = slowmodeCmd({ pluginData, msg.channel, asSingleLine(` - Failed to clear slowmode from **${args.user.username}#${args.user.discriminator}** in <#${args.channel.id}>: + Failed to clear slowmode from **${args.user.tag}** in <#${args.channel.id}>: \`${disableInlineCode(e.message)}\` `), ); return; } - sendSuccessMessage( - pluginData, - msg.channel, - `Slowmode cleared from **${args.user.username}#${args.user.discriminator}** in <#${args.channel.id}>`, - ); + sendSuccessMessage(pluginData, msg.channel, `Slowmode cleared from **${args.user.tag}** in <#${args.channel.id}>`); }, }); diff --git a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts index a66f09f8..209d8ca8 100644 --- a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts +++ b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts @@ -18,7 +18,7 @@ export function createStarboardEmbedFromMessage( text: `#${(msg.channel as GuildChannel).name}`, }, author: { - name: `${msg.author.username}#${msg.author.discriminator}`, + name: `${msg.author.tag}`, }, fields: [], timestamp: msg.createdAt, diff --git a/backend/src/plugins/UsernameSaver/updateUsername.ts b/backend/src/plugins/UsernameSaver/updateUsername.ts index 56debeac..baaa3bd1 100644 --- a/backend/src/plugins/UsernameSaver/updateUsername.ts +++ b/backend/src/plugins/UsernameSaver/updateUsername.ts @@ -4,7 +4,7 @@ import { UsernameSaverPluginType } from "./types"; export async function updateUsername(pluginData: GuildPluginData, user: User) { if (!user) return; - const newUsername = `${user.username}#${user.discriminator}`; + const newUsername = `${user.tag}`; const latestEntry = await pluginData.state.usernameHistory.getLastEntry(user.id); if (!latestEntry || newUsername !== latestEntry.username) { await pluginData.state.usernameHistory.addEntry(user.id, newUsername); diff --git a/backend/src/plugins/Utility/commands/AvatarCmd.ts b/backend/src/plugins/Utility/commands/AvatarCmd.ts index 7fe01bb9..cf8714b1 100644 --- a/backend/src/plugins/Utility/commands/AvatarCmd.ts +++ b/backend/src/plugins/Utility/commands/AvatarCmd.ts @@ -24,7 +24,7 @@ export const AvatarCmd = utilityCmd({ const embed: MessageEmbedOptions = { image: { url: avatarUrl + `${extension}?size=2048` }, }; - embed.title = `Avatar of ${user.username}#${user.discriminator}:`; + embed.title = `Avatar of ${user.tag}:`; msg.channel.send({ embeds: [embed] }); } else { sendErrorMessage(pluginData, msg.channel, "Invalid user ID"); diff --git a/backend/src/plugins/Utility/commands/LevelCmd.ts b/backend/src/plugins/Utility/commands/LevelCmd.ts index 404412b5..e0be2605 100644 --- a/backend/src/plugins/Utility/commands/LevelCmd.ts +++ b/backend/src/plugins/Utility/commands/LevelCmd.ts @@ -17,8 +17,6 @@ export const LevelCmd = utilityCmd({ run({ message, args, pluginData }) { const member = args.member || message.member; const level = getMemberLevel(pluginData, member); - message.channel.send( - `The permission level of ${member.user.username}#${member.user.discriminator} is **${level}**`, - ); + message.channel.send(`The permission level of ${member.user.tag} is **${level}**`); }, }); diff --git a/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts b/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts index 8c20adc4..d473b491 100644 --- a/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts +++ b/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts @@ -44,10 +44,6 @@ export const VcdisconnectCmd = utilityCmd({ oldChannel: channelToConfigAccessibleChannel(channel), }); - sendSuccessMessage( - pluginData, - msg.channel, - `**${args.member.user.username}#${args.member.user.discriminator}** disconnected from **${channel.name}**`, - ); + sendSuccessMessage(pluginData, msg.channel, `**${args.member.user.tag}** disconnected from **${channel.name}**`); }, }); diff --git a/backend/src/plugins/Utility/commands/VcmoveCmd.ts b/backend/src/plugins/Utility/commands/VcmoveCmd.ts index adb56d96..0e7bface 100644 --- a/backend/src/plugins/Utility/commands/VcmoveCmd.ts +++ b/backend/src/plugins/Utility/commands/VcmoveCmd.ts @@ -85,11 +85,7 @@ export const VcmoveCmd = utilityCmd({ newChannel: channelToConfigAccessibleChannel(channel), }); - sendSuccessMessage( - pluginData, - msg.channel, - `**${args.member.user.username}#${args.member.user.discriminator}** moved to **${channel.name}**`, - ); + sendSuccessMessage(pluginData, msg.channel, `**${args.member.user.tag}** moved to **${channel.name}**`); }, }); @@ -162,7 +158,7 @@ export const VcmoveAllCmd = utilityCmd({ sendErrorMessage( pluginData, msg.channel, - `Failed to move ${currMember.user.username}#${currMember.user.discriminator} (${currMember.id}): You cannot act on this member`, + `Failed to move ${currMember.user.tag} (${currMember.id}): You cannot act on this member`, ); errAmt++; continue; @@ -177,11 +173,7 @@ export const VcmoveAllCmd = utilityCmd({ sendErrorMessage(pluginData, msg.channel, "Unknown error when trying to move members"); return; } - sendErrorMessage( - pluginData, - msg.channel, - `Failed to move ${currMember.user.username}#${currMember.user.discriminator} (${currMember.id})`, - ); + sendErrorMessage(pluginData, msg.channel, `Failed to move ${currMember.user.tag} (${currMember.id})`); errAmt++; continue; } diff --git a/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts b/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts index c8ddfad8..a95de14b 100644 --- a/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts +++ b/backend/src/plugins/Utility/functions/getInviteInfoEmbed.ts @@ -96,7 +96,7 @@ export async function getInviteInfoEmbed( embed.fields.push({ name: preEmbedPadding + "Invite creator", value: trimLines(` - Name: **${invite.inviter.username}#${invite.inviter.discriminator}** + Name: **${invite.inviter.tag}** ID: \`${invite.inviter.id}\` Mention: <@!${invite.inviter.id}> `), @@ -143,7 +143,7 @@ export async function getInviteInfoEmbed( embed.fields.push({ name: preEmbedPadding + "Invite creator", value: trimLines(` - Name: **${invite.inviter.username}#${invite.inviter.discriminator}** + Name: **${invite.inviter.tag}** ID: \`${invite.inviter.id}\` Mention: <@!${invite.inviter.id}> `), diff --git a/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts b/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts index 5b8fc4bc..17e2c63f 100644 --- a/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts +++ b/backend/src/plugins/Utility/functions/getMessageInfoEmbed.ts @@ -112,7 +112,7 @@ export async function getMessageInfoEmbed( embed.fields.push({ name: preEmbedPadding + "Author information", value: trimLines(` - Name: **${message.author.username}#${message.author.discriminator}** + Name: **${message.author.tag}** ID: \`${message.author.id}\` Created: **${authorAccountAge} ago** (\`${prettyAuthorCreatedAt}\`) ${authorJoinedAt ? `Joined: **${authorServerAge} ago** (\`${prettyAuthorJoinedAt}\`)` : ""} diff --git a/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts b/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts index 2eb04a60..93b4d45e 100644 --- a/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts +++ b/backend/src/plugins/Utility/functions/getServerInfoEmbed.ts @@ -65,7 +65,7 @@ export async function getServerInfoEmbed( if (thisServer) { const owner = await resolveUser(pluginData.client, thisServer.ownerId); - const ownerName = `${owner.username}#${owner.discriminator}`; + const ownerName = `${owner.tag}`; basicInformation.push(`Owner: **${ownerName}** (\`${thisServer.ownerId}\`)`); // basicInformation.push(`Voice region: **${thisServer.region}**`); Outdated, as automatic voice regions are fully live diff --git a/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts b/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts index 581193fb..4f87dabc 100644 --- a/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts +++ b/backend/src/plugins/Utility/functions/getUserInfoEmbed.ts @@ -36,7 +36,7 @@ export async function getUserInfoEmbed( const timeAndDate = pluginData.getPlugin(TimeAndDatePlugin); embed.author = { - name: `User: ${user.username}#${user.discriminator}`, + name: `User: ${user.tag}`, }; const avatarURL = user.displayAvatarURL(); @@ -84,7 +84,7 @@ export async function getUserInfoEmbed( embed.fields.push({ name: preEmbedPadding + "User information", value: trimLines(` - Name: **${user.username}#${user.discriminator}** + Name: **${user.tag}** ID: \`${user.id}\` Created: **${accountAge} ago** (\`${prettyCreatedAt}\`) Mention: <@!${user.id}> diff --git a/backend/src/plugins/Utility/search.ts b/backend/src/plugins/Utility/search.ts index 40bd1d1b..97bc1bd4 100644 --- a/backend/src/plugins/Utility/search.ts +++ b/backend/src/plugins/Utility/search.ts @@ -391,7 +391,7 @@ async function performMemberSearch( return true; } - const fullUsername = `${member.user.username}#${member.user.discriminator}`; + const fullUsername = `${member.user.tag}`; if (await execRegExp(queryRegex, fullUsername).catch(allowTimeout)) return true; return false; @@ -458,7 +458,7 @@ async function performBanSearch( const execRegExp = getOptimizedRegExpRunner(pluginData, isSafeRegex); matchingBans = await asyncFilter(matchingBans, async user => { - const fullUsername = `${user.username}#${user.discriminator}`; + const fullUsername = `${user.tag}`; if (await execRegExp(queryRegex, fullUsername).catch(allowTimeout)) return true; return false; }); @@ -502,10 +502,10 @@ function formatSearchResultList(members: Array): string { const paddedId = member.id.padEnd(longestId, " "); let line; if (member instanceof GuildMember) { - line = `${paddedId} ${member.user.username}#${member.user.discriminator}`; + line = `${paddedId} ${member.user.tag}`; if (member.nickname) line += ` (${member.nickname})`; } else { - line = `${paddedId} ${member.username}#${member.discriminator}`; + line = `${paddedId} ${member.tag}`; } return line; }); diff --git a/backend/src/utils.ts b/backend/src/utils.ts index c4464f97..99d46617 100644 --- a/backend/src/utils.ts +++ b/backend/src/utils.ts @@ -1099,6 +1099,7 @@ export class UnknownUser { public id: string; public username = "Unknown"; public discriminator = "0000"; + public tag = "Unknown#0000"; constructor(props = {}) { for (const key in props) { @@ -1353,18 +1354,18 @@ export function messageSummary(msg: SavedMessage) { export function verboseUserMention(user: User | UnknownUser): string { if (user.id == null) { - return `**${user.username}#${user.discriminator}**`; + return `**${user.tag}**`; } - return `<@!${user.id}> (**${user.username}#${user.discriminator}**, \`${user.id}\`)`; + return `<@!${user.id}> (**${user.tag}**, \`${user.id}\`)`; } export function verboseUserName(user: User | UnknownUser): string { if (user.id == null) { - return `**${user.username}#${user.discriminator}**`; + return `**${user.tag}**`; } - return `**${user.username}#${user.discriminator}** (\`${user.id}\`)`; + return `**${user.tag}** (\`${user.id}\`)`; } export function verboseChannelMention(channel: GuildChannel): string { diff --git a/backend/src/utils/configAccessibleObjects.ts b/backend/src/utils/configAccessibleObjects.ts index 1c281ed6..638fb6ca 100644 --- a/backend/src/utils/configAccessibleObjects.ts +++ b/backend/src/utils/configAccessibleObjects.ts @@ -38,7 +38,7 @@ export interface IConfigAccessibleMember extends IConfigAccessibleUser { } export function userToConfigAccessibleUser(user: User | UnknownUser): IConfigAccessibleUser { - if (`${user.username}#${user.discriminator}` === "Unknown#0000") { + if (`${user.tag}` === "Unknown#0000") { const toReturnPartial: IConfigAccessibleUser = { id: user.id, username: "Unknown", From bd5e5100a597a50a963dde8c6f10b931588b6742 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 00:50:41 +0100 Subject: [PATCH 12/22] typo and return --- .../ReactionRoles/events/ButtonInteractionEvt.ts | 4 ++-- .../ReactionRoles/util/buttonActionHandlers.ts | 12 ++++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts b/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts index 7f366140..a08e4579 100644 --- a/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts +++ b/backend/src/plugins/ReactionRoles/events/ButtonInteractionEvt.ts @@ -55,7 +55,7 @@ export const ButtonInteractionEvt = reactionRolesEvt({ .getPlugin(LogsPlugin) .log( LogType.BOT_ALERT, - `**A configuration error occured** on buttons for message ${int.message.id}, group **${context.groupName}** not found in config`, + `**A configuration error occurred** on buttons for message ${int.message.id}, group **${context.groupName}** not found in config`, ); return; } @@ -67,7 +67,7 @@ export const ButtonInteractionEvt = reactionRolesEvt({ .getPlugin(LogsPlugin) .log( LogType.BOT_ALERT, - `**A internal error occured** on buttons for message ${int.message.id}, action **${context.action}** is not known`, + `**A internal error occurred** on buttons for message ${int.message.id}, action **${context.action}** is not known`, ); return; } diff --git a/backend/src/plugins/ReactionRoles/util/buttonActionHandlers.ts b/backend/src/plugins/ReactionRoles/util/buttonActionHandlers.ts index 314516b6..446cc0ee 100644 --- a/backend/src/plugins/ReactionRoles/util/buttonActionHandlers.ts +++ b/backend/src/plugins/ReactionRoles/util/buttonActionHandlers.ts @@ -22,7 +22,7 @@ export async function handleOpenMenu( .getPlugin(LogsPlugin) .log( LogType.BOT_ALERT, - `**A configuration error occured** on buttons for message ${int.message.id}, no menus found in config`, + `**A configuration error occurred** on buttons for message ${int.message.id}, no menus found in config`, ); return; } @@ -52,14 +52,13 @@ export async function handleOpenMenu( .getPlugin(LogsPlugin) .log( LogType.BOT_ALERT, - `**A configuration error occured** on buttons for message ${int.message.id}, menu **${context.roleOrMenu}** not found in config`, + `**A configuration error occurred** on buttons for message ${int.message.id}, menu **${context.roleOrMenu}** not found in config`, ); return; } const rows = splitButtonsIntoRows(menuButtons, Object.values(group.button_menus[context.roleOrMenu])); // new MessageActionRow().addComponents(menuButtons); int.reply({ content: `Click to add/remove a role`, components: rows, ephemeral: true }); - return; } export async function handleModifyRole( @@ -78,7 +77,7 @@ export async function handleModifyRole( .getPlugin(LogsPlugin) .log( LogType.BOT_ALERT, - `**A configuration error occured** on buttons for message ${int.message.id}, role **${context.roleOrMenu}** not found on server`, + `**A configuration error occurred** on buttons for message ${int.message.id}, role **${context.roleOrMenu}** not found on server`, ); return; } @@ -101,10 +100,7 @@ export async function handleModifyRole( .getPlugin(LogsPlugin) .log( LogType.BOT_ALERT, - `**A configuration error occured** on buttons for message ${int.message.id}, error: ${e}. We might be missing permissions!`, + `**A configuration error occurred** on buttons for message ${int.message.id}, error: ${e}. We might be missing permissions!`, ); - return; } - - return; } From de7c721c0e2f63234ed52a7f0d51f205d3ce1e92 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 00:52:19 +0100 Subject: [PATCH 13/22] simplify ternary --- backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts b/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts index ce4894e0..22bc74d7 100644 --- a/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts +++ b/backend/src/plugins/Slowmode/commands/SlowmodeSetCmd.ts @@ -89,7 +89,7 @@ export const SlowmodeSetCmd = slowmodeCmd({ if (mode === "native") { const missingPermissions = getMissingPermissions( - channelPermissions ? channelPermissions : new Permissions(), + channelPermissions ?? new Permissions(), NATIVE_SLOWMODE_PERMISSIONS, ); if (missingPermissions) { @@ -104,7 +104,7 @@ export const SlowmodeSetCmd = slowmodeCmd({ if (mode === "bot") { const missingPermissions = getMissingPermissions( - channelPermissions ? channelPermissions : new Permissions(), + channelPermissions ?? new Permissions(), BOT_SLOWMODE_PERMISSIONS, ); if (missingPermissions) { From cfe3bff74289291b5656b8afb35f63a701b35e4b Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 00:55:03 +0100 Subject: [PATCH 14/22] fetch fix --- backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts b/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts index 208f628a..3a29a711 100644 --- a/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts +++ b/backend/src/plugins/Slowmode/util/applyBotSlowmodeToUserId.ts @@ -21,7 +21,7 @@ export async function applyBotSlowmodeToUserId( await channel.permissionOverwrites.create(userId as Snowflake, { SEND_MESSAGES: false }, { type: 1 }); } } catch (e) { - const user = (await pluginData.client.users.fetch(userId as Snowflake)) || new UnknownUser({ id: userId }); + const user = await pluginData.client.users.fetch(userId as Snowflake).catch(() => new UnknownUser({ id: userId })); if (isDiscordAPIError(e) && e.code === 50013) { logger.warn( From c98de0f554e95608632b211f16a89ebba92976a6 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 00:58:11 +0100 Subject: [PATCH 15/22] fetch fix --- backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts b/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts index 0d22bca8..f8490e4d 100644 --- a/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts +++ b/backend/src/plugins/Slowmode/util/clearExpiredSlowmodes.ts @@ -21,8 +21,9 @@ export async function clearExpiredSlowmodes(pluginData: GuildPluginData new UnknownUser({ id: user.user_id })); pluginData.state.logs.log(LogType.BOT_ALERT, { body: `Failed to clear slowmode permissions from {userMention(user)} in {channelMention(channel)}`, From 9539c5a7de1d355d83bf33a7dc93b766bc553e0b Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 01:08:00 +0100 Subject: [PATCH 16/22] corrected type assertion --- backend/src/plugins/Starboard/util/saveMessageToStarboard.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts b/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts index 12e2785a..ed2bd3f9 100644 --- a/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts +++ b/backend/src/plugins/Starboard/util/saveMessageToStarboard.ts @@ -1,4 +1,4 @@ -import { Message, MessageEmbed, Snowflake, TextChannel } from "discord.js"; +import { Message, MessageEmbedOptions, Snowflake, TextChannel } from "discord.js"; import { GuildPluginData } from "knub"; import { StarboardPluginType, TStarboardOpts } from "../types"; import { createStarboardEmbedFromMessage } from "./createStarboardEmbedFromMessage"; @@ -16,6 +16,6 @@ export async function saveMessageToStarboard( const embed = createStarboardEmbedFromMessage(msg, Boolean(starboard.copy_full_embed), starboard.color); embed.fields!.push(createStarboardPseudoFooterForMessage(starboard, msg, starboard.star_emoji![0], starCount)); - const starboardMessage = await (channel as TextChannel).send({ embeds: [embed as MessageEmbed] }); + const starboardMessage = await (channel as TextChannel).send({ embeds: [embed as MessageEmbedOptions] }); await pluginData.state.starboardMessages.createStarboardMessage(channel.id, msg.id, starboardMessage.id); } From 87cc461c79a87efe9d065b9d27a31480e8978317 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 01:10:53 +0100 Subject: [PATCH 17/22] always set author icon url using dynamic --- .../plugins/Starboard/util/createStarboardEmbedFromMessage.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts index 209d8ca8..0cc579a9 100644 --- a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts +++ b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts @@ -28,9 +28,7 @@ export function createStarboardEmbedFromMessage( embed.color = color; } - if (msg.author.avatarURL()) { - embed.author.icon_url = msg.author.avatarURL()!; - } + embed.author.icon_url = msg.author.displayAvatarURL({ dynamic: true }); // The second condition here checks for messages with only an image link that is then embedded. // The message content in that case is hidden by the Discord client, so we hide it here too. From 3a59f772ae0668d4b1f1e5706fb2d254679d0a9d Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 01:18:06 +0100 Subject: [PATCH 18/22] use optional chaining and createdTimestamp on embed --- backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts | 4 ++-- .../plugins/Starboard/util/createStarboardEmbedFromMessage.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts b/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts index b5f9bbba..e34b34c2 100644 --- a/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts +++ b/backend/src/plugins/Spam/util/logAndDetectMessageSpam.ts @@ -120,8 +120,8 @@ export async function logAndDetectMessageSpam( // Then, if enabled, remove the spam messages if (spamConfig.clean !== false) { msgIds.forEach(id => pluginData.state.logs.ignoreLog(LogType.MESSAGE_DELETE, id)); - (pluginData.guild.channels.cache.get(savedMessage.channel_id as Snowflake)! as TextChannel) - .bulkDelete(msgIds as Snowflake[]) + (pluginData.guild.channels.cache.get(savedMessage.channel_id as Snowflake)! as TextChannel | undefined) + ?.bulkDelete(msgIds as Snowflake[]) .catch(noop); } diff --git a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts index 0cc579a9..e1fe0aed 100644 --- a/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts +++ b/backend/src/plugins/Starboard/util/createStarboardEmbedFromMessage.ts @@ -21,7 +21,7 @@ export function createStarboardEmbedFromMessage( name: `${msg.author.tag}`, }, fields: [], - timestamp: msg.createdAt, + timestamp: msg.createdTimestamp, }; if (color != null) { From 0f5162ee21b9ed4e9e47ee752acf7dc0c0da9e25 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 01:20:40 +0100 Subject: [PATCH 19/22] ping in about cmd --- backend/src/plugins/Utility/commands/AboutCmd.ts | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/backend/src/plugins/Utility/commands/AboutCmd.ts b/backend/src/plugins/Utility/commands/AboutCmd.ts index 8c7d4db5..0d6f8493 100644 --- a/backend/src/plugins/Utility/commands/AboutCmd.ts +++ b/backend/src/plugins/Utility/commands/AboutCmd.ts @@ -39,8 +39,6 @@ export const AboutCmd = utilityCmd({ version = "?"; } - // const shard = pluginData.client.shards.get(pluginData.client.guildShardMap[pluginData.guild.id])!; FIXME Sharding stuff - const lastReload = humanizeDuration(Date.now() - pluginData.state.lastReload, { largest: 2, round: true, @@ -51,7 +49,7 @@ export const AboutCmd = utilityCmd({ ["Last reload", `${lastReload} ago`], ["Last update", lastUpdate], ["Version", version], - // ["API latency", `${shard.latency}ms`], + ["API latency", `${pluginData.client.ws.ping}ms`], ["Server timezone", timeAndDate.getGuildTz()], ]; @@ -70,11 +68,7 @@ export const AboutCmd = utilityCmd({ fields: [ { name: "Status", - value: basicInfoRows - .map(([label, value]) => { - return `${label}: **${value}**`; - }) - .join("\n"), + value: basicInfoRows.map(([label, value]) => `${label}: **${value}**`).join("\n"), }, { name: `Loaded plugins on this server (${loadedPlugins.length})`, From 80f2dacb7f3f98efd18d661163f6b8cce9b8b435 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 01:22:37 +0100 Subject: [PATCH 20/22] simplified avatar cmd --- backend/src/plugins/Utility/commands/AvatarCmd.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/backend/src/plugins/Utility/commands/AvatarCmd.ts b/backend/src/plugins/Utility/commands/AvatarCmd.ts index cf8714b1..d503bc97 100644 --- a/backend/src/plugins/Utility/commands/AvatarCmd.ts +++ b/backend/src/plugins/Utility/commands/AvatarCmd.ts @@ -16,15 +16,12 @@ export const AvatarCmd = utilityCmd({ async run({ message: msg, args, pluginData }) { const user = args.user || msg.author; if (!(user instanceof UnknownUser)) { - const avatar = user.displayAvatarURL(); - let extension = avatar.slice(avatar.lastIndexOf("."), avatar.lastIndexOf("?")); - // Some pngs can have the .jpg extention for some reason, so we always use .png for static images - extension = extension === ".gif" ? extension : ".png"; - const avatarUrl = avatar.slice(0, avatar.lastIndexOf(".")); const embed: MessageEmbedOptions = { - image: { url: avatarUrl + `${extension}?size=2048` }, + image: { + url: user.displayAvatarURL({ dynamic: true, format: "png", size: 2048 }), + }, + title: `Avatar of ${user.tag}:`, }; - embed.title = `Avatar of ${user.tag}:`; msg.channel.send({ embeds: [embed] }); } else { sendErrorMessage(pluginData, msg.channel, "Invalid user ID"); From a8298d4faa38d7720fd3af0949070bb454fd4ce2 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 01:43:50 +0100 Subject: [PATCH 21/22] fixed jumbo cmd, simplified checks and fixed ping cmd --- .../src/plugins/Utility/commands/JumboCmd.ts | 35 +++++++++---------- .../src/plugins/Utility/commands/PingCmd.ts | 5 ++- .../Utility/commands/VcdisconnectCmd.ts | 2 +- .../src/plugins/Utility/commands/VcmoveCmd.ts | 2 +- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/backend/src/plugins/Utility/commands/JumboCmd.ts b/backend/src/plugins/Utility/commands/JumboCmd.ts index 4e2e99a7..bc117d45 100644 --- a/backend/src/plugins/Utility/commands/JumboCmd.ts +++ b/backend/src/plugins/Utility/commands/JumboCmd.ts @@ -1,3 +1,4 @@ +import { MessageAttachment } from "discord.js"; import fs from "fs"; import sharp from "sharp"; import twemoji from "twemoji"; @@ -39,8 +40,8 @@ export const JumboCmd = utilityCmd({ const size = config.jumbo_size > 2048 ? 2048 : config.jumbo_size; const emojiRegex = new RegExp(`(<.*:).*:(\\d+)`); const results = emojiRegex.exec(args.emoji); - let extention = ".png"; - let file; + let extension = ".png"; + let file: MessageAttachment | undefined; if (!isEmoji(args.emoji)) { sendErrorMessage(pluginData, msg.channel, "Invalid emoji"); @@ -50,25 +51,19 @@ export const JumboCmd = utilityCmd({ if (results) { let url = "https://cdn.discordapp.com/emojis/"; if (results[1] === " total + ms, 0) / times.length); - // const shard = pluginData.client.shards.get(pluginData.client.guildShardMap[pluginData.guild.id])!; FIXME sharding stuff - msg.channel.send( trimLines(` **Ping:** @@ -38,7 +36,8 @@ export const PingCmd = utilityCmd({ Highest: **${highest}ms** Mean: **${mean}ms** Time between ping command and first reply: **${msgToMsgDelay!}ms** - `), // Omitted line: Shard latency: **${shard.latency}ms** + Shard latency: **${pluginData.client.ws.ping}ms** + `), ); // Clean up test messages diff --git a/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts b/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts index d473b491..c5d4b14d 100644 --- a/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts +++ b/backend/src/plugins/Utility/commands/VcdisconnectCmd.ts @@ -25,7 +25,7 @@ export const VcdisconnectCmd = utilityCmd({ return; } - if (!args.member.voice || !args.member.voice.channelId) { + if (!args.member.voice?.channelId) { sendErrorMessage(pluginData, msg.channel, "Member is not in a voice channel"); return; } diff --git a/backend/src/plugins/Utility/commands/VcmoveCmd.ts b/backend/src/plugins/Utility/commands/VcmoveCmd.ts index 0e7bface..9e51dd5b 100644 --- a/backend/src/plugins/Utility/commands/VcmoveCmd.ts +++ b/backend/src/plugins/Utility/commands/VcmoveCmd.ts @@ -57,7 +57,7 @@ export const VcmoveCmd = utilityCmd({ channel = closestMatch; } - if (!args.member.voice || !args.member.voice.channelId) { + if (!args.member.voice?.channelId) { sendErrorMessage(pluginData, msg.channel, "Member is not in a voice channel"); return; } From a3e6e4f31992db5ac31c8c8fb67163c672e19bf2 Mon Sep 17 00:00:00 2001 From: almeidx Date: Thu, 29 Jul 2021 01:51:11 +0100 Subject: [PATCH 22/22] removed unnecessary conditional --- backend/src/index.ts | 2 +- .../src/plugins/Utility/events/AutoJoinThreadEvt.ts | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index 70bf4d2e..7ab1032d 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -174,7 +174,7 @@ connect().then(async () => { client.setMaxListeners(200); client.on("rateLimit", rateLimitData => { - logger.info(`[429] ${rateLimitData}`); + logger.info(`[429] ${JSON.stringify(rateLimitData)}`); }); client.on("error", err => { diff --git a/backend/src/plugins/Utility/events/AutoJoinThreadEvt.ts b/backend/src/plugins/Utility/events/AutoJoinThreadEvt.ts index 6789073c..84c36768 100644 --- a/backend/src/plugins/Utility/events/AutoJoinThreadEvt.ts +++ b/backend/src/plugins/Utility/events/AutoJoinThreadEvt.ts @@ -5,7 +5,7 @@ export const AutoJoinThreadEvt = utilityEvt({ async listener(meta) { const config = meta.pluginData.config.get(); - if (config.autojoin_threads && meta.args.thread.joinable && !meta.args.thread.joined) { + if (config.autojoin_threads && meta.args.thread.joinable) { await meta.args.thread.join(); } }, @@ -16,11 +16,10 @@ export const AutoJoinThreadSyncEvt = utilityEvt({ async listener(meta) { const config = meta.pluginData.config.get(); - if (config.autojoin_threads) { - for (const thread of meta.args.threads.values()) { - if (!thread.joined && thread.joinable) { - await thread.join(); - } + if (config.autojoin_threads) return; + for (const thread of meta.args.threads.values()) { + if (!thread.joined && thread.joinable) { + await thread.join(); } } },