3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-19 07:20:00 +00:00
zeppelin/backend/src/plugins/NameHistory/commands/NamesCmd.ts

51 lines
2 KiB
TypeScript

import { nameHistoryCmd } from "../types";
import { commandTypeHelpers as ct } from "../../../commandTypes";
import { disableCodeBlocks, createChunkedMessage } from "knub/dist/helpers";
import { NICKNAME_RETENTION_PERIOD } from "src/data/cleanup/nicknames";
import { DAYS } from "src/utils";
import { MAX_NICKNAME_ENTRIES_PER_USER } from "src/data/GuildNicknameHistory";
import { MAX_USERNAME_ENTRIES_PER_USER } from "src/data/UsernameHistory";
import { sendErrorMessage } from "src/pluginUtils";
export const NamesCmd = nameHistoryCmd({
trigger: "names",
permission: "can_view",
signature: {
userId: ct.userId(),
},
async run({ message: msg, args, pluginData }) {
const nicknames = await pluginData.state.nicknameHistory.getByUserId(args.userId);
const usernames = await pluginData.state.usernameHistory.getByUserId(args.userId);
if (nicknames.length === 0 && usernames.length === 0) {
return sendErrorMessage(pluginData, msg.channel, "No name history found");
}
const nicknameRows = nicknames.map(
r => `\`[${r.timestamp}]\` ${r.nickname ? `**${disableCodeBlocks(r.nickname)}**` : "*None*"}`,
);
const usernameRows = usernames.map(r => `\`[${r.timestamp}]\` **${disableCodeBlocks(r.username)}**`);
const user = pluginData.client.users.get(args.userId);
const currentUsername = user ? `${user.username}#${user.discriminator}` : args.userId;
const nicknameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS);
const usernameDays = Math.round(NICKNAME_RETENTION_PERIOD / DAYS);
let message = `Name history for **${currentUsername}**:`;
if (nicknameRows.length) {
message += `\n\n__Last ${MAX_NICKNAME_ENTRIES_PER_USER} nicknames within ${nicknameDays} days:__\n${nicknameRows.join(
"\n",
)}`;
}
if (usernameRows.length) {
message += `\n\n__Last ${MAX_USERNAME_ENTRIES_PER_USER} usernames within ${usernameDays} days:__\n${usernameRows.join(
"\n",
)}`;
}
createChunkedMessage(msg.channel, message);
},
});