feat: new username support vol 2
This commit is contained in:
parent
ecaa16bf7c
commit
63c41f0278
29 changed files with 105 additions and 64 deletions
|
@ -67,7 +67,7 @@ export const StartThreadAction = automodAction({
|
||||||
msg: savedMessageToTemplateSafeSavedMessage(threadContext.message!),
|
msg: savedMessageToTemplateSafeSavedMessage(threadContext.message!),
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
const threadName = await renderThreadName(actionConfig.name ?? "{user.tag}s thread");
|
const threadName = await renderThreadName(actionConfig.name ?? "{user.renderedUsername}'s thread");
|
||||||
const threadOptions: GuildTextThreadCreateOptions<unknown> = {
|
const threadOptions: GuildTextThreadCreateOptions<unknown> = {
|
||||||
name: threadName,
|
name: threadName,
|
||||||
autoArchiveDuration: autoArchive,
|
autoArchiveDuration: autoArchive,
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { Snowflake } from "discord.js";
|
import { Snowflake } from "discord.js";
|
||||||
import * as t from "io-ts";
|
import * as t from "io-ts";
|
||||||
|
import { renderUserUsername } from "../../../utils";
|
||||||
import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
|
import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
|
||||||
import { automodTrigger } from "../helpers";
|
import { automodTrigger } from "../helpers";
|
||||||
|
|
||||||
|
@ -37,7 +38,7 @@ export const RoleAddedTrigger = automodTrigger<RoleAddedMatchResult>()({
|
||||||
const role = pluginData.guild.roles.cache.get(matchResult.extra.matchedRoleId as Snowflake);
|
const role = pluginData.guild.roles.cache.get(matchResult.extra.matchedRoleId as Snowflake);
|
||||||
const roleName = role?.name || "Unknown";
|
const roleName = role?.name || "Unknown";
|
||||||
const member = contexts[0].member!;
|
const member = contexts[0].member!;
|
||||||
const memberName = `**${member.user.tag}** (\`${member.id}\`)`;
|
const memberName = `**${renderUserUsername(member.user)}** (\`${member.id}\`)`;
|
||||||
return `Role ${roleName} (\`${matchResult.extra.matchedRoleId}\`) was added to ${memberName}`;
|
return `Role ${roleName} (\`${matchResult.extra.matchedRoleId}\`) was added to ${memberName}`;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { Snowflake } from "discord.js";
|
import { Snowflake } from "discord.js";
|
||||||
import * as t from "io-ts";
|
import * as t from "io-ts";
|
||||||
|
import { renderUserUsername } from "../../../utils";
|
||||||
import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
|
import { consumeIgnoredRoleChange } from "../functions/ignoredRoleChanges";
|
||||||
import { automodTrigger } from "../helpers";
|
import { automodTrigger } from "../helpers";
|
||||||
|
|
||||||
|
@ -37,7 +38,7 @@ export const RoleRemovedTrigger = automodTrigger<RoleAddedMatchResult>()({
|
||||||
const role = pluginData.guild.roles.cache.get(matchResult.extra.matchedRoleId as Snowflake);
|
const role = pluginData.guild.roles.cache.get(matchResult.extra.matchedRoleId as Snowflake);
|
||||||
const roleName = role?.name || "Unknown";
|
const roleName = role?.name || "Unknown";
|
||||||
const member = contexts[0].member!;
|
const member = contexts[0].member!;
|
||||||
const memberName = `**${member.user.tag}** (\`${member.id}\`)`;
|
const memberName = `**${renderUserUsername(member.user)}** (\`${member.id}\`)`;
|
||||||
return `Role ${roleName} (\`${matchResult.extra.matchedRoleId}\`) was removed from ${memberName}`;
|
return `Role ${roleName} (\`${matchResult.extra.matchedRoleId}\`) was removed from ${memberName}`;
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { ApiPermissions } from "@shared/apiPermissions";
|
import { ApiPermissions } from "@shared/apiPermissions";
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { isStaffPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { isStaffPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
|
import { renderUserUsername } from "../../../utils";
|
||||||
import { botControlCmd } from "../types";
|
import { botControlCmd } from "../types";
|
||||||
|
|
||||||
export const AddDashboardUserCmd = botControlCmd({
|
export const AddDashboardUserCmd = botControlCmd({
|
||||||
|
@ -34,7 +35,7 @@ export const AddDashboardUserCmd = botControlCmd({
|
||||||
await pluginData.state.apiPermissionAssignments.addUser(args.guildId, user.id, [ApiPermissions.EditConfig]);
|
await pluginData.state.apiPermissionAssignments.addUser(args.guildId, user.id, [ApiPermissions.EditConfig]);
|
||||||
}
|
}
|
||||||
|
|
||||||
const userNameList = args.users.map((user) => `<@!${user.id}> (**${user.tag}**, \`${user.id}\`)`);
|
const userNameList = args.users.map((user) => `<@!${user.id}> (**${renderUserUsername(user)}**, \`${user.id}\`)`);
|
||||||
sendSuccessMessage(
|
sendSuccessMessage(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { AllowedGuild } from "../../../data/entities/AllowedGuild";
|
import { AllowedGuild } from "../../../data/entities/AllowedGuild";
|
||||||
import { ApiPermissionAssignment } from "../../../data/entities/ApiPermissionAssignment";
|
import { ApiPermissionAssignment } from "../../../data/entities/ApiPermissionAssignment";
|
||||||
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { resolveUser } from "../../../utils";
|
import { renderUserUsername, resolveUser } from "../../../utils";
|
||||||
import { botControlCmd } from "../types";
|
import { botControlCmd } from "../types";
|
||||||
|
|
||||||
export const ListDashboardPermsCmd = botControlCmd({
|
export const ListDashboardPermsCmd = botControlCmd({
|
||||||
|
@ -42,7 +42,7 @@ export const ListDashboardPermsCmd = botControlCmd({
|
||||||
|
|
||||||
// If we have user, always display which guilds they have permissions in (or only specified guild permissions)
|
// If we have user, always display which guilds they have permissions in (or only specified guild permissions)
|
||||||
if (args.user) {
|
if (args.user) {
|
||||||
const userInfo = `**${args.user.tag}** (\`${args.user.id}\`)`;
|
const userInfo = `**${renderUserUsername(args.user)}** (\`${args.user.id}\`)`;
|
||||||
|
|
||||||
for (const assignment of existingUserAssignment!) {
|
for (const assignment of existingUserAssignment!) {
|
||||||
if (guild != null && assignment.guild_id !== args.guildId) continue;
|
if (guild != null && assignment.guild_id !== args.guildId) continue;
|
||||||
|
@ -74,7 +74,9 @@ export const ListDashboardPermsCmd = botControlCmd({
|
||||||
finalMessage += `The server ${guildInfo} has the following assigned permissions:\n`; // Double \n for consistency with AddDashboardUserCmd
|
finalMessage += `The server ${guildInfo} has the following assigned permissions:\n`; // Double \n for consistency with AddDashboardUserCmd
|
||||||
for (const assignment of existingGuildAssignment) {
|
for (const assignment of existingGuildAssignment) {
|
||||||
const user = await resolveUser(pluginData.client, assignment.target_id);
|
const user = await resolveUser(pluginData.client, assignment.target_id);
|
||||||
finalMessage += `\n**${user.tag}**, \`${assignment.target_id}\`: ${assignment.permissions.join(", ")}`;
|
finalMessage += `\n**${renderUserUsername(user)}**, \`${assignment.target_id}\`: ${assignment.permissions.join(
|
||||||
|
", ",
|
||||||
|
)}`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { resolveUser } from "../../../utils";
|
import { renderUserUsername, resolveUser } from "../../../utils";
|
||||||
import { botControlCmd } from "../types";
|
import { botControlCmd } from "../types";
|
||||||
|
|
||||||
export const ListDashboardUsersCmd = botControlCmd({
|
export const ListDashboardUsersCmd = botControlCmd({
|
||||||
|
@ -27,7 +27,7 @@ export const ListDashboardUsersCmd = botControlCmd({
|
||||||
);
|
);
|
||||||
const userNameList = users.map(
|
const userNameList = users.map(
|
||||||
({ user, permission }) =>
|
({ user, permission }) =>
|
||||||
`<@!${user.id}> (**${user.tag}**, \`${user.id}\`): ${permission.permissions.join(", ")}`,
|
`<@!${user.id}> (**${renderUserUsername(user)}**, \`${user.id}\`): ${permission.permissions.join(", ")}`,
|
||||||
);
|
);
|
||||||
|
|
||||||
sendSuccessMessage(
|
sendSuccessMessage(
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { isStaffPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { isStaffPreFilter, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
|
import { renderUserUsername } from "../../../utils";
|
||||||
import { botControlCmd } from "../types";
|
import { botControlCmd } from "../types";
|
||||||
|
|
||||||
export const RemoveDashboardUserCmd = botControlCmd({
|
export const RemoveDashboardUserCmd = botControlCmd({
|
||||||
|
@ -33,7 +34,7 @@ export const RemoveDashboardUserCmd = botControlCmd({
|
||||||
await pluginData.state.apiPermissionAssignments.removeUser(args.guildId, user.id);
|
await pluginData.state.apiPermissionAssignments.removeUser(args.guildId, user.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
const userNameList = args.users.map((user) => `<@!${user.id}> (**${user.tag}**, \`${user.id}\`)`);
|
const userNameList = args.users.map((user) => `<@!${user.id}> (**${renderUserUsername(user)}**, \`${user.id}\`)`);
|
||||||
sendSuccessMessage(
|
sendSuccessMessage(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
import type { Snowflake } from "discord.js";
|
import type { Snowflake } from "discord.js";
|
||||||
import { GuildPluginData } from "knub";
|
import { GuildPluginData } from "knub";
|
||||||
import { logger } from "../../../logger";
|
import { logger } from "../../../logger";
|
||||||
import { resolveUser } from "../../../utils";
|
import { renderUserUsername, resolveUser } from "../../../utils";
|
||||||
import { CaseArgs, CasesPluginType } from "../types";
|
import { CaseArgs, CasesPluginType } from "../types";
|
||||||
import { createCaseNote } from "./createCaseNote";
|
import { createCaseNote } from "./createCaseNote";
|
||||||
import { postCaseToCaseLogChannel } from "./postToCaseLogChannel";
|
import { postCaseToCaseLogChannel } from "./postToCaseLogChannel";
|
||||||
|
|
||||||
export async function createCase(pluginData: GuildPluginData<CasesPluginType>, args: CaseArgs) {
|
export async function createCase(pluginData: GuildPluginData<CasesPluginType>, args: CaseArgs) {
|
||||||
const user = await resolveUser(pluginData.client, args.userId);
|
const user = await resolveUser(pluginData.client, args.userId);
|
||||||
const userName = user.tag;
|
const userName = renderUserUsername(user);
|
||||||
|
|
||||||
const mod = await resolveUser(pluginData.client, args.modId);
|
const mod = await resolveUser(pluginData.client, args.modId);
|
||||||
const modName = mod.tag;
|
const modName = mod.tag;
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { CaseTypes } from "../../../data/CaseTypes";
|
||||||
import { Case } from "../../../data/entities/Case";
|
import { Case } from "../../../data/entities/Case";
|
||||||
import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
|
import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
|
||||||
import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { resolveMember, resolveUser } from "../../../utils";
|
import { renderUserUsername, resolveMember, resolveUser } from "../../../utils";
|
||||||
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
||||||
import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
|
import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
|
||||||
import { modActionsCmd } from "../types";
|
import { modActionsCmd } from "../types";
|
||||||
|
@ -72,7 +72,11 @@ export const AddCaseCmd = modActionsCmd({
|
||||||
});
|
});
|
||||||
|
|
||||||
if (user) {
|
if (user) {
|
||||||
sendSuccessMessage(pluginData, msg.channel, `Case #${theCase.case_number} created for **${user.tag}**`);
|
sendSuccessMessage(
|
||||||
|
pluginData,
|
||||||
|
msg.channel,
|
||||||
|
`Case #${theCase.case_number} created for **${renderUserUsername(user)}**`,
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
sendSuccessMessage(pluginData, msg.channel, `Case #${theCase.case_number} created`);
|
sendSuccessMessage(pluginData, msg.channel, `Case #${theCase.case_number} created`);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { CaseTypes } from "../../../data/CaseTypes";
|
||||||
import { clearExpiringTempban, registerExpiringTempban } from "../../../data/loops/expiringTempbansLoop";
|
import { clearExpiringTempban, registerExpiringTempban } from "../../../data/loops/expiringTempbansLoop";
|
||||||
import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
|
import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
|
||||||
import { resolveMember, resolveUser } from "../../../utils";
|
import { renderUserUsername, resolveMember, resolveUser } from "../../../utils";
|
||||||
import { banLock } from "../../../utils/lockNameHelpers";
|
import { banLock } from "../../../utils/lockNameHelpers";
|
||||||
import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
|
import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
|
||||||
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
||||||
|
@ -207,7 +207,7 @@ export const BanCmd = modActionsCmd({
|
||||||
// Confirm the action to the moderator
|
// Confirm the action to the moderator
|
||||||
let response = "";
|
let response = "";
|
||||||
if (!forceban) {
|
if (!forceban) {
|
||||||
response = `Banned **${user.tag}** ${forTime}(Case #${banResult.case.case_number})`;
|
response = `Banned **${renderUserUsername(user)}** ${forTime}(Case #${banResult.case.case_number})`;
|
||||||
if (banResult.notifyResult.text) response += ` (${banResult.notifyResult.text})`;
|
if (banResult.notifyResult.text) response += ` (${banResult.notifyResult.text})`;
|
||||||
} else {
|
} else {
|
||||||
response = `Member forcebanned ${forTime}(Case #${banResult.case.case_number})`;
|
response = `Member forcebanned ${forTime}(Case #${banResult.case.case_number})`;
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { CaseTypes } from "../../../data/CaseTypes";
|
import { CaseTypes } from "../../../data/CaseTypes";
|
||||||
import { sendErrorMessage } from "../../../pluginUtils";
|
import { sendErrorMessage } from "../../../pluginUtils";
|
||||||
import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
|
import { CasesPlugin } from "../../../plugins/Cases/CasesPlugin";
|
||||||
import { UnknownUser, chunkArray, emptyEmbedValue, resolveUser, trimLines } from "../../../utils";
|
import { UnknownUser, chunkArray, emptyEmbedValue, renderUserUsername, resolveUser, trimLines } from "../../../utils";
|
||||||
import { asyncMap } from "../../../utils/async";
|
import { asyncMap } from "../../../utils/async";
|
||||||
import { getChunkedEmbedFields } from "../../../utils/getChunkedEmbedFields";
|
import { getChunkedEmbedFields } from "../../../utils/getChunkedEmbedFields";
|
||||||
import { getGuildPrefix } from "../../../utils/getGuildPrefix";
|
import { getGuildPrefix } from "../../../utils/getGuildPrefix";
|
||||||
|
@ -61,7 +61,8 @@ export const CasesUserCmd = modActionsCmd({
|
||||||
const normalCases = cases.filter((c) => !c.is_hidden);
|
const normalCases = cases.filter((c) => !c.is_hidden);
|
||||||
const hiddenCases = cases.filter((c) => 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.tag;
|
const userName =
|
||||||
|
user instanceof UnknownUser && cases.length ? cases[cases.length - 1].user_name : renderUserUsername(user);
|
||||||
|
|
||||||
if (cases.length === 0) {
|
if (cases.length === 0) {
|
||||||
msg.channel.send(`No cases found for **${userName}**`);
|
msg.channel.send(`No cases found for **${userName}**`);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { CaseTypes } from "../../../data/CaseTypes";
|
import { CaseTypes } from "../../../data/CaseTypes";
|
||||||
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { resolveUser } from "../../../utils";
|
import { renderUserUsername, resolveUser } from "../../../utils";
|
||||||
import { CasesPlugin } from "../../Cases/CasesPlugin";
|
import { CasesPlugin } from "../../Cases/CasesPlugin";
|
||||||
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
||||||
import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
|
import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
|
||||||
|
@ -29,7 +29,7 @@ export const NoteCmd = modActionsCmd({
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const userName = user.tag;
|
const userName = renderUserUsername(user);
|
||||||
const reason = formatReasonWithAttachments(args.note, [...msg.attachments.values()]);
|
const reason = formatReasonWithAttachments(args.note, [...msg.attachments.values()]);
|
||||||
|
|
||||||
const casesPlugin = pluginData.getPlugin(CasesPlugin);
|
const casesPlugin = pluginData.getPlugin(CasesPlugin);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { CaseTypes } from "../../../data/CaseTypes";
|
import { CaseTypes } from "../../../data/CaseTypes";
|
||||||
import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { canActOn, hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { errorMessage, resolveMember, resolveUser } from "../../../utils";
|
import { errorMessage, renderUserUsername, resolveMember, resolveUser } from "../../../utils";
|
||||||
import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
|
import { waitForButtonConfirm } from "../../../utils/waitForInteraction";
|
||||||
import { CasesPlugin } from "../../Cases/CasesPlugin";
|
import { CasesPlugin } from "../../Cases/CasesPlugin";
|
||||||
import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
|
import { formatReasonWithAttachments } from "../functions/formatReasonWithAttachments";
|
||||||
|
@ -106,7 +106,7 @@ export const WarnCmd = modActionsCmd({
|
||||||
sendSuccessMessage(
|
sendSuccessMessage(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
`Warned **${memberToWarn.user.tag}** (Case #${warnResult.case.case_number})${messageResultText}`,
|
`Warned **${renderUserUsername(memberToWarn.user)}** (Case #${warnResult.case.case_number})${messageResultText}`,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { PermissionsBitField, Snowflake, TextChannel } from "discord.js";
|
import { PermissionsBitField, Snowflake, TextChannel } from "discord.js";
|
||||||
import { resolveMember } from "../../../utils";
|
import { renderUserUsername, resolveMember } from "../../../utils";
|
||||||
import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
|
import { hasDiscordPermissions } from "../../../utils/hasDiscordPermissions";
|
||||||
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
||||||
import { modActionsEvt } from "../types";
|
import { modActionsEvt } from "../types";
|
||||||
|
@ -46,7 +46,9 @@ export const PostAlertOnMemberJoinEvt = modActionsEvt({
|
||||||
}
|
}
|
||||||
|
|
||||||
await alertChannel.send(
|
await alertChannel.send(
|
||||||
`<@!${member.id}> (${member.user.tag} \`${member.id}\`) joined with ${actions.length} prior record(s)`,
|
`<@!${member.id}> (${renderUserUsername(member.user)} \`${member.id}\`) joined with ${
|
||||||
|
actions.length
|
||||||
|
} prior record(s)`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { GuildPluginData } from "knub";
|
||||||
import { hasPermission } from "knub/helpers";
|
import { hasPermission } from "knub/helpers";
|
||||||
import { LogType } from "../../../data/LogType";
|
import { LogType } from "../../../data/LogType";
|
||||||
import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { DAYS, SECONDS, errorMessage, resolveMember, resolveUser } from "../../../utils";
|
import { DAYS, SECONDS, errorMessage, renderUserUsername, resolveMember, resolveUser } from "../../../utils";
|
||||||
import { IgnoredEventType, ModActionsPluginType } from "../types";
|
import { IgnoredEventType, ModActionsPluginType } from "../types";
|
||||||
import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
|
import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
|
||||||
import { ignoreEvent } from "./ignoreEvent";
|
import { ignoreEvent } from "./ignoreEvent";
|
||||||
|
@ -103,7 +103,7 @@ export async function actualKickMemberCmd(
|
||||||
}
|
}
|
||||||
|
|
||||||
// Confirm the action to the moderator
|
// Confirm the action to the moderator
|
||||||
let response = `Kicked **${memberToKick.user.tag}** (Case #${kickResult.case.case_number})`;
|
let response = `Kicked **${renderUserUsername(memberToKick.user)}** (Case #${kickResult.case.case_number})`;
|
||||||
|
|
||||||
if (kickResult.notifyResult.text) response += ` (${kickResult.notifyResult.text})`;
|
if (kickResult.notifyResult.text) response += ` (${kickResult.notifyResult.text})`;
|
||||||
sendSuccessMessage(pluginData, msg.channel, response);
|
sendSuccessMessage(pluginData, msg.channel, response);
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { GuildPluginData } from "knub";
|
||||||
import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
|
import { ERRORS, RecoverablePluginError } from "../../../RecoverablePluginError";
|
||||||
import { logger } from "../../../logger";
|
import { logger } from "../../../logger";
|
||||||
import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { UnknownUser, asSingleLine, isDiscordAPIError } from "../../../utils";
|
import { UnknownUser, asSingleLine, isDiscordAPIError, renderUserUsername } from "../../../utils";
|
||||||
import { MutesPlugin } from "../../Mutes/MutesPlugin";
|
import { MutesPlugin } from "../../Mutes/MutesPlugin";
|
||||||
import { MuteResult } from "../../Mutes/types";
|
import { MuteResult } from "../../Mutes/types";
|
||||||
import { ModActionsPluginType } from "../types";
|
import { ModActionsPluginType } from "../types";
|
||||||
|
@ -86,24 +86,24 @@ export async function actualMuteUserCmd(
|
||||||
if (args.time) {
|
if (args.time) {
|
||||||
if (muteResult.updatedExistingMute) {
|
if (muteResult.updatedExistingMute) {
|
||||||
response = asSingleLine(`
|
response = asSingleLine(`
|
||||||
Updated **${user.tag}**'s
|
Updated **${renderUserUsername(user)}**'s
|
||||||
mute to ${timeUntilUnmute} (Case #${muteResult.case.case_number})
|
mute to ${timeUntilUnmute} (Case #${muteResult.case.case_number})
|
||||||
`);
|
`);
|
||||||
} else {
|
} else {
|
||||||
response = asSingleLine(`
|
response = asSingleLine(`
|
||||||
Muted **${user.tag}**
|
Muted **${renderUserUsername(user)}**
|
||||||
for ${timeUntilUnmute} (Case #${muteResult.case.case_number})
|
for ${timeUntilUnmute} (Case #${muteResult.case.case_number})
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (muteResult.updatedExistingMute) {
|
if (muteResult.updatedExistingMute) {
|
||||||
response = asSingleLine(`
|
response = asSingleLine(`
|
||||||
Updated **${user.tag}**'s
|
Updated **${renderUserUsername(user)}**'s
|
||||||
mute to indefinite (Case #${muteResult.case.case_number})
|
mute to indefinite (Case #${muteResult.case.case_number})
|
||||||
`);
|
`);
|
||||||
} else {
|
} else {
|
||||||
response = asSingleLine(`
|
response = asSingleLine(`
|
||||||
Muted **${user.tag}**
|
Muted **${renderUserUsername(user)}**
|
||||||
indefinitely (Case #${muteResult.case.case_number})
|
indefinitely (Case #${muteResult.case.case_number})
|
||||||
`);
|
`);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ import humanizeDuration from "humanize-duration";
|
||||||
import { GuildPluginData } from "knub";
|
import { GuildPluginData } from "knub";
|
||||||
import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { hasPermission, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
|
import { MutesPlugin } from "../../../plugins/Mutes/MutesPlugin";
|
||||||
import { UnknownUser, asSingleLine } from "../../../utils";
|
import { UnknownUser, asSingleLine, renderUserUsername } from "../../../utils";
|
||||||
import { ModActionsPluginType } from "../types";
|
import { ModActionsPluginType } from "../types";
|
||||||
import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
|
import { formatReasonWithAttachments } from "./formatReasonWithAttachments";
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ export async function actualUnmuteCmd(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
asSingleLine(`
|
asSingleLine(`
|
||||||
Unmuting **${user.tag}**
|
Unmuting **${renderUserUsername(user)}**
|
||||||
in ${timeUntilUnmute} (Case #${result.case.case_number})
|
in ${timeUntilUnmute} (Case #${result.case.case_number})
|
||||||
`),
|
`),
|
||||||
);
|
);
|
||||||
|
@ -57,7 +57,7 @@ export async function actualUnmuteCmd(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
asSingleLine(`
|
asSingleLine(`
|
||||||
Unmuted **${user.tag}**
|
Unmuted **${renderUserUsername(user)}**
|
||||||
(Case #${result.case.case_number})
|
(Case #${result.case.case_number})
|
||||||
`),
|
`),
|
||||||
);
|
);
|
||||||
|
|
|
@ -10,7 +10,7 @@ import moment from "moment-timezone";
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { humanizeDurationShort } from "../../../humanizeDurationShort";
|
import { humanizeDurationShort } from "../../../humanizeDurationShort";
|
||||||
import { getBaseUrl } from "../../../pluginUtils";
|
import { getBaseUrl } from "../../../pluginUtils";
|
||||||
import { DBDateFormat, MINUTES, resolveMember } from "../../../utils";
|
import { DBDateFormat, MINUTES, renderUserUsername, resolveMember } from "../../../utils";
|
||||||
import { IMuteWithDetails, mutesCmd } from "../types";
|
import { IMuteWithDetails, mutesCmd } from "../types";
|
||||||
|
|
||||||
export const MutesCmd = mutesCmd({
|
export const MutesCmd = mutesCmd({
|
||||||
|
@ -74,7 +74,7 @@ export const MutesCmd = mutesCmd({
|
||||||
totalMutes = manuallyMutedMembers.length;
|
totalMutes = manuallyMutedMembers.length;
|
||||||
|
|
||||||
lines = manuallyMutedMembers.map((member) => {
|
lines = manuallyMutedMembers.map((member) => {
|
||||||
return `<@!${member.id}> (**${member.user.tag}**, \`${member.id}\`) 🔧 Manual mute`;
|
return `<@!${member.id}> (**${renderUserUsername(member.user)}**, \`${member.id}\`) 🔧 Manual mute`;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Show filtered active mutes (but not manual mutes)
|
// Show filtered active mutes (but not manual mutes)
|
||||||
|
@ -123,7 +123,7 @@ export const MutesCmd = mutesCmd({
|
||||||
|
|
||||||
lines = filteredMutes.map((mute) => {
|
lines = filteredMutes.map((mute) => {
|
||||||
const user = pluginData.client.users.resolve(mute.user_id as Snowflake);
|
const user = pluginData.client.users.resolve(mute.user_id as Snowflake);
|
||||||
const username = user ? user.tag : "Unknown#0000";
|
const username = user ? renderUserUsername(user) : "Unknown#0000";
|
||||||
const theCase = muteCasesById.get(mute.case_id);
|
const theCase = muteCasesById.get(mute.case_id);
|
||||||
const caseName = theCase ? `Case #${theCase.case_number}` : "No case";
|
const caseName = theCase ? `Case #${theCase.case_number}` : "No case";
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ import { MAX_NICKNAME_ENTRIES_PER_USER } from "../../../data/GuildNicknameHistor
|
||||||
import { MAX_USERNAME_ENTRIES_PER_USER } from "../../../data/UsernameHistory";
|
import { MAX_USERNAME_ENTRIES_PER_USER } from "../../../data/UsernameHistory";
|
||||||
import { NICKNAME_RETENTION_PERIOD } from "../../../data/cleanup/nicknames";
|
import { NICKNAME_RETENTION_PERIOD } from "../../../data/cleanup/nicknames";
|
||||||
import { sendErrorMessage } from "../../../pluginUtils";
|
import { sendErrorMessage } from "../../../pluginUtils";
|
||||||
import { DAYS } from "../../../utils";
|
import { DAYS, renderUserUsername } from "../../../utils";
|
||||||
import { nameHistoryCmd } from "../types";
|
import { nameHistoryCmd } from "../types";
|
||||||
|
|
||||||
export const NamesCmd = nameHistoryCmd({
|
export const NamesCmd = nameHistoryCmd({
|
||||||
|
@ -31,7 +31,7 @@ export const NamesCmd = nameHistoryCmd({
|
||||||
const usernameRows = usernames.map((r) => `\`[${r.timestamp}]\` **${disableCodeBlocks(r.username)}**`);
|
const usernameRows = usernames.map((r) => `\`[${r.timestamp}]\` **${disableCodeBlocks(r.username)}**`);
|
||||||
|
|
||||||
const user = await pluginData.client.users.fetch(args.userId as Snowflake).catch(() => null);
|
const user = await pluginData.client.users.fetch(args.userId as Snowflake).catch(() => null);
|
||||||
const currentUsername = user ? user.tag : args.userId;
|
const currentUsername = user ? renderUserUsername(user) : args.userId;
|
||||||
|
|
||||||
const nicknameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS);
|
const nicknameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS);
|
||||||
const usernameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS);
|
const usernameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { Snowflake } from "discord.js";
|
import { Snowflake } from "discord.js";
|
||||||
import { GuildPluginData } from "knub";
|
import { GuildPluginData } from "knub";
|
||||||
import { logger } from "../../../logger";
|
import { logger } from "../../../logger";
|
||||||
import { resolveMember } from "../../../utils";
|
import { renderUserUsername, resolveMember } from "../../../utils";
|
||||||
import { memberRolesLock } from "../../../utils/lockNameHelpers";
|
import { memberRolesLock } from "../../../utils/lockNameHelpers";
|
||||||
import { PendingMemberRoleChanges, ReactionRolesPluginType, RoleChangeMode } from "../types";
|
import { PendingMemberRoleChanges, ReactionRolesPluginType, RoleChangeMode } from "../types";
|
||||||
|
|
||||||
|
@ -33,7 +33,9 @@ export async function addMemberPendingRoleChange(
|
||||||
try {
|
try {
|
||||||
await member.roles.set(Array.from(newRoleIds.values()), "Reaction roles");
|
await member.roles.set(Array.from(newRoleIds.values()), "Reaction roles");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logger.warn(`Failed to apply role changes to ${member.user.tag} (${member.id}): ${e.message}`);
|
logger.warn(
|
||||||
|
`Failed to apply role changes to ${renderUserUsername(member.user)} (${member.id}): ${e.message}`,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { ChannelType, escapeInlineCode } from "discord.js";
|
import { ChannelType, escapeInlineCode } from "discord.js";
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { asSingleLine } from "../../../utils";
|
import { asSingleLine, renderUserUsername } from "../../../utils";
|
||||||
import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
|
import { getMissingChannelPermissions } from "../../../utils/getMissingChannelPermissions";
|
||||||
import { missingPermissionError } from "../../../utils/missingPermissionError";
|
import { missingPermissionError } from "../../../utils/missingPermissionError";
|
||||||
import { BOT_SLOWMODE_CLEAR_PERMISSIONS } from "../requiredPermissions";
|
import { BOT_SLOWMODE_CLEAR_PERMISSIONS } from "../requiredPermissions";
|
||||||
|
@ -45,7 +45,7 @@ export const SlowmodeClearCmd = slowmodeCmd({
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
asSingleLine(`
|
asSingleLine(`
|
||||||
Failed to clear slowmode from **${args.user.tag}** in <#${args.channel.id}>:
|
Failed to clear slowmode from **${renderUserUsername(args.user)}** in <#${args.channel.id}>:
|
||||||
Threads cannot have Bot Slowmode
|
Threads cannot have Bot Slowmode
|
||||||
`),
|
`),
|
||||||
);
|
);
|
||||||
|
@ -56,13 +56,17 @@ export const SlowmodeClearCmd = slowmodeCmd({
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
asSingleLine(`
|
asSingleLine(`
|
||||||
Failed to clear slowmode from **${args.user.tag}** in <#${args.channel.id}>:
|
Failed to clear slowmode from **${renderUserUsername(args.user)}** in <#${args.channel.id}>:
|
||||||
\`${escapeInlineCode(e.message)}\`
|
\`${escapeInlineCode(e.message)}\`
|
||||||
`),
|
`),
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendSuccessMessage(pluginData, msg.channel, `Slowmode cleared from **${args.user.tag}** in <#${args.channel.id}>`);
|
sendSuccessMessage(
|
||||||
|
pluginData,
|
||||||
|
msg.channel,
|
||||||
|
`Slowmode cleared from **${renderUserUsername(args.user)}** in <#${args.channel.id}>`,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
import { User } from "discord.js";
|
import { User } from "discord.js";
|
||||||
import { GuildPluginData } from "knub";
|
import { GuildPluginData } from "knub";
|
||||||
|
import { renderUserUsername } from "../../utils";
|
||||||
import { UsernameSaverPluginType } from "./types";
|
import { UsernameSaverPluginType } from "./types";
|
||||||
|
|
||||||
export async function updateUsername(pluginData: GuildPluginData<UsernameSaverPluginType>, user: User) {
|
export async function updateUsername(pluginData: GuildPluginData<UsernameSaverPluginType>, user: User) {
|
||||||
if (!user) return;
|
if (!user) return;
|
||||||
const newUsername = user.tag;
|
const newUsername = renderUserUsername(user);
|
||||||
const latestEntry = await pluginData.state.usernameHistory.getLastEntry(user.id);
|
const latestEntry = await pluginData.state.usernameHistory.getLastEntry(user.id);
|
||||||
if (!latestEntry || newUsername !== latestEntry.username) {
|
if (!latestEntry || newUsername !== latestEntry.username) {
|
||||||
await pluginData.state.usernameHistory.addEntry(user.id, newUsername);
|
await pluginData.state.usernameHistory.addEntry(user.id, newUsername);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { APIEmbed, ImageFormat } from "discord.js";
|
import { APIEmbed, ImageFormat } from "discord.js";
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { sendErrorMessage } from "../../../pluginUtils";
|
import { sendErrorMessage } from "../../../pluginUtils";
|
||||||
import { UnknownUser } from "../../../utils";
|
import { UnknownUser, renderUserUsername } from "../../../utils";
|
||||||
import { utilityCmd } from "../types";
|
import { utilityCmd } from "../types";
|
||||||
|
|
||||||
export const AvatarCmd = utilityCmd({
|
export const AvatarCmd = utilityCmd({
|
||||||
|
@ -20,7 +20,7 @@ export const AvatarCmd = utilityCmd({
|
||||||
image: {
|
image: {
|
||||||
url: user.displayAvatarURL({ extension: ImageFormat.PNG, size: 2048 }),
|
url: user.displayAvatarURL({ extension: ImageFormat.PNG, size: 2048 }),
|
||||||
},
|
},
|
||||||
title: `Avatar of ${user.tag}:`,
|
title: `Avatar of ${renderUserUsername(user)}:`,
|
||||||
};
|
};
|
||||||
msg.channel.send({ embeds: [embed] });
|
msg.channel.send({ embeds: [embed] });
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { helpers } from "knub";
|
import { helpers } from "knub";
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
|
import { renderUserUsername } from "../../../utils";
|
||||||
import { utilityCmd } from "../types";
|
import { utilityCmd } from "../types";
|
||||||
|
|
||||||
const { getMemberLevel } = helpers;
|
const { getMemberLevel } = helpers;
|
||||||
|
@ -17,6 +18,6 @@ export const LevelCmd = utilityCmd({
|
||||||
run({ message, args, pluginData }) {
|
run({ message, args, pluginData }) {
|
||||||
const member = args.member || message.member;
|
const member = args.member || message.member;
|
||||||
const level = getMemberLevel(pluginData, member);
|
const level = getMemberLevel(pluginData, member);
|
||||||
message.channel.send(`The permission level of ${member.user.tag} is **${level}**`);
|
message.channel.send(`The permission level of ${renderUserUsername(member.user)} is **${level}**`);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { VoiceChannel } from "discord.js";
|
import { VoiceChannel } from "discord.js";
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
|
import { renderUserUsername } from "../../../utils";
|
||||||
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
||||||
import { utilityCmd } from "../types";
|
import { utilityCmd } from "../types";
|
||||||
|
|
||||||
|
@ -39,6 +40,10 @@ export const VcdisconnectCmd = utilityCmd({
|
||||||
oldChannel: channel,
|
oldChannel: channel,
|
||||||
});
|
});
|
||||||
|
|
||||||
sendSuccessMessage(pluginData, msg.channel, `**${args.member.user.tag}** disconnected from **${channel.name}**`);
|
sendSuccessMessage(
|
||||||
|
pluginData,
|
||||||
|
msg.channel,
|
||||||
|
`**${renderUserUsername(args.member.user)}** disconnected from **${channel.name}**`,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { ChannelType, Snowflake, VoiceChannel } from "discord.js";
|
import { ChannelType, Snowflake, VoiceChannel } from "discord.js";
|
||||||
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
||||||
import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
import { canActOn, sendErrorMessage, sendSuccessMessage } from "../../../pluginUtils";
|
||||||
import { channelMentionRegex, isSnowflake, simpleClosestStringMatch } from "../../../utils";
|
import { channelMentionRegex, isSnowflake, renderUserUsername, simpleClosestStringMatch } from "../../../utils";
|
||||||
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
import { LogsPlugin } from "../../Logs/LogsPlugin";
|
||||||
import { utilityCmd } from "../types";
|
import { utilityCmd } from "../types";
|
||||||
|
|
||||||
|
@ -80,7 +80,11 @@ export const VcmoveCmd = utilityCmd({
|
||||||
newChannel: channel,
|
newChannel: channel,
|
||||||
});
|
});
|
||||||
|
|
||||||
sendSuccessMessage(pluginData, msg.channel, `**${args.member.user.tag}** moved to **${channel.name}**`);
|
sendSuccessMessage(
|
||||||
|
pluginData,
|
||||||
|
msg.channel,
|
||||||
|
`**${renderUserUsername(args.member.user)}** moved to **${channel.name}**`,
|
||||||
|
);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -153,7 +157,7 @@ export const VcmoveAllCmd = utilityCmd({
|
||||||
sendErrorMessage(
|
sendErrorMessage(
|
||||||
pluginData,
|
pluginData,
|
||||||
msg.channel,
|
msg.channel,
|
||||||
`Failed to move ${currMember.user.tag} (${currMember.id}): You cannot act on this member`,
|
`Failed to move ${renderUserUsername(currMember.user)} (${currMember.id}): You cannot act on this member`,
|
||||||
);
|
);
|
||||||
errAmt++;
|
errAmt++;
|
||||||
continue;
|
continue;
|
||||||
|
@ -168,7 +172,11 @@ export const VcmoveAllCmd = utilityCmd({
|
||||||
sendErrorMessage(pluginData, msg.channel, "Unknown error when trying to move members");
|
sendErrorMessage(pluginData, msg.channel, "Unknown error when trying to move members");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sendErrorMessage(pluginData, msg.channel, `Failed to move ${currMember.user.tag} (${currMember.id})`);
|
sendErrorMessage(
|
||||||
|
pluginData,
|
||||||
|
msg.channel,
|
||||||
|
`Failed to move ${renderUserUsername(currMember.user)} (${currMember.id})`,
|
||||||
|
);
|
||||||
errAmt++;
|
errAmt++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ import { ArgsFromSignatureOrArray, GuildPluginData } from "knub";
|
||||||
import moment from "moment-timezone";
|
import moment from "moment-timezone";
|
||||||
import { RegExpRunner, allowTimeout } from "../../RegExpRunner";
|
import { RegExpRunner, allowTimeout } from "../../RegExpRunner";
|
||||||
import { getBaseUrl, sendErrorMessage } from "../../pluginUtils";
|
import { getBaseUrl, sendErrorMessage } from "../../pluginUtils";
|
||||||
import { MINUTES, multiSorter, sorter, trimLines } from "../../utils";
|
import { MINUTES, multiSorter, renderUserUsername, sorter, trimLines } from "../../utils";
|
||||||
import { asyncFilter } from "../../utils/async";
|
import { asyncFilter } from "../../utils/async";
|
||||||
import { hasDiscordPermissions } from "../../utils/hasDiscordPermissions";
|
import { hasDiscordPermissions } from "../../utils/hasDiscordPermissions";
|
||||||
import { InvalidRegexError, inputPatternToRegExp } from "../../validatorUtils";
|
import { InvalidRegexError, inputPatternToRegExp } from "../../validatorUtils";
|
||||||
|
@ -381,7 +381,7 @@ async function performMemberSearch(
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const fullUsername = member.user.tag;
|
const fullUsername = renderUserUsername(member.user);
|
||||||
if (await execRegExp(queryRegex, fullUsername).catch(allowTimeout)) return true;
|
if (await execRegExp(queryRegex, fullUsername).catch(allowTimeout)) return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -448,7 +448,7 @@ async function performBanSearch(
|
||||||
|
|
||||||
const execRegExp = getOptimizedRegExpRunner(pluginData, isSafeRegex);
|
const execRegExp = getOptimizedRegExpRunner(pluginData, isSafeRegex);
|
||||||
matchingBans = await asyncFilter(matchingBans, async (user) => {
|
matchingBans = await asyncFilter(matchingBans, async (user) => {
|
||||||
const fullUsername = user.tag;
|
const fullUsername = renderUserUsername(user);
|
||||||
if (await execRegExp(queryRegex, fullUsername).catch(allowTimeout)) return true;
|
if (await execRegExp(queryRegex, fullUsername).catch(allowTimeout)) return true;
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
@ -492,7 +492,7 @@ function formatSearchResultList(members: Array<GuildMember | User>): string {
|
||||||
const paddedId = member.id.padEnd(longestId, " ");
|
const paddedId = member.id.padEnd(longestId, " ");
|
||||||
let line;
|
let line;
|
||||||
if (member instanceof GuildMember) {
|
if (member instanceof GuildMember) {
|
||||||
line = `${paddedId} ${member.user.tag}`;
|
line = `${paddedId} ${renderUserUsername(member.user)}`;
|
||||||
if (member.nickname) line += ` (${member.nickname})`;
|
if (member.nickname) line += ` (${member.nickname})`;
|
||||||
} else {
|
} else {
|
||||||
line = `${paddedId} ${member.tag}`;
|
line = `${paddedId} ${member.tag}`;
|
||||||
|
|
|
@ -1431,18 +1431,18 @@ export function messageSummary(msg: SavedMessage) {
|
||||||
|
|
||||||
export function verboseUserMention(user: User | UnknownUser): string {
|
export function verboseUserMention(user: User | UnknownUser): string {
|
||||||
if (user.id == null) {
|
if (user.id == null) {
|
||||||
return `**${user.tag}**`;
|
return `**${renderUsername(user.username, user.discriminator)}**`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return `<@!${user.id}> (**${user.tag}**, \`${user.id}\`)`;
|
return `<@!${user.id}> (**${renderUsername(user.username, user.discriminator)}**, \`${user.id}\`)`;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function verboseUserName(user: User | UnknownUser): string {
|
export function verboseUserName(user: User | UnknownUser): string {
|
||||||
if (user.id == null) {
|
if (user.id == null) {
|
||||||
return `**${user.tag}**`;
|
return `**${renderUsername(user.username, user.discriminator)}**`;
|
||||||
}
|
}
|
||||||
|
|
||||||
return `**${user.tag}** (\`${user.id}\`)`;
|
return `**${renderUsername(user.username, user.discriminator)}** (\`${user.id}\`)`;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function verboseChannelMention(channel: GuildBasedChannel): string {
|
export function verboseChannelMention(channel: GuildBasedChannel): string {
|
||||||
|
@ -1603,9 +1603,13 @@ export function isTruthy<T>(value: T): value is Exclude<T, false | null | undefi
|
||||||
|
|
||||||
export const DBDateFormat = "YYYY-MM-DD HH:mm:ss";
|
export const DBDateFormat = "YYYY-MM-DD HH:mm:ss";
|
||||||
|
|
||||||
export function renderUsername(username: string, discriminator: string) {
|
export function renderUsername(username: string, discriminator: string): string {
|
||||||
if (discriminator === "0") {
|
if (discriminator === "0") {
|
||||||
return username;
|
return username;
|
||||||
}
|
}
|
||||||
return `${username}#${discriminator}`;
|
return `${username}#${discriminator}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function renderUserUsername(user: User | UnknownUser): string {
|
||||||
|
return renderUsername(user.username, user.discriminator);
|
||||||
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ import {
|
||||||
User,
|
User,
|
||||||
} from "discord.js";
|
} from "discord.js";
|
||||||
import { GuildPluginData } from "knub";
|
import { GuildPluginData } from "knub";
|
||||||
import { UnknownUser } from "src/utils";
|
import { UnknownUser, renderUserUsername } from "src/utils";
|
||||||
import { Case } from "../data/entities/Case";
|
import { Case } from "../data/entities/Case";
|
||||||
import {
|
import {
|
||||||
ISavedMessageAttachmentData,
|
ISavedMessageAttachmentData,
|
||||||
|
@ -54,6 +54,7 @@ export class TemplateSafeUser extends TemplateSafeValueContainer {
|
||||||
avatarURL?: string;
|
avatarURL?: string;
|
||||||
bot?: boolean;
|
bot?: boolean;
|
||||||
createdAt?: number;
|
createdAt?: number;
|
||||||
|
renderedUsername: string;
|
||||||
|
|
||||||
constructor(data: InputProps<TemplateSafeUser>) {
|
constructor(data: InputProps<TemplateSafeUser>) {
|
||||||
super();
|
super();
|
||||||
|
@ -248,6 +249,7 @@ export function userToTemplateSafeUser(user: User | UnknownUser): TemplateSafeUs
|
||||||
discriminator: "0000",
|
discriminator: "0000",
|
||||||
mention: `<@${user.id}>`,
|
mention: `<@${user.id}>`,
|
||||||
tag: "Unknown#0000",
|
tag: "Unknown#0000",
|
||||||
|
renderedUsername: renderUserUsername(user),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,6 +262,7 @@ export function userToTemplateSafeUser(user: User | UnknownUser): TemplateSafeUs
|
||||||
avatarURL: user.displayAvatarURL?.(),
|
avatarURL: user.displayAvatarURL?.(),
|
||||||
bot: user.bot,
|
bot: user.bot,
|
||||||
createdAt: user.createdTimestamp,
|
createdAt: user.createdTimestamp,
|
||||||
|
renderedUsername: renderUserUsername(user),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue