2020-07-21 00:10:09 +02:00
|
|
|
import { nameHistoryCmd } from "../types";
|
|
|
|
import { commandTypeHelpers as ct } from "../../../commandTypes";
|
2020-07-22 22:56:21 +03:00
|
|
|
import { createChunkedMessage, disableCodeBlocks } from "knub/dist/helpers";
|
2020-10-01 01:43:38 +03:00
|
|
|
import { NICKNAME_RETENTION_PERIOD } from "../../../data/cleanup/nicknames";
|
|
|
|
import { DAYS } from "../../../utils";
|
|
|
|
import { MAX_NICKNAME_ENTRIES_PER_USER } from "../../../data/GuildNicknameHistory";
|
|
|
|
import { MAX_USERNAME_ENTRIES_PER_USER } from "../../../data/UsernameHistory";
|
|
|
|
import { sendErrorMessage } from "../../../pluginUtils";
|
2020-07-21 00:10:09 +02:00
|
|
|
|
|
|
|
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);
|
|
|
|
},
|
|
|
|
});
|