3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-21 16:55:03 +00:00
zeppelin/backend/src/plugins/Utility/commands/NicknameCmd.ts

54 lines
1.7 KiB
TypeScript

import { Util } from "discord.js";
import { commandTypeHelpers as ct } from "../../../commandTypes";
import { errorMessage } from "../../../utils";
import { canActOn, sendSuccessMessage } from "../../../pluginUtils";
import { utilityCmd } from "../types";
export const NicknameCmd = utilityCmd({
trigger: ["nickname", "nick"],
description: "Set a member's nickname",
usage: "!nickname 106391128718245888 Drag",
permission: "can_nickname",
signature: {
member: ct.resolvedMember(),
nickname: ct.string({ catchAll: true, required: false }),
},
async run({ message: msg, args, pluginData }) {
if (!args.nickname) {
if (!args.member.nickname) {
msg.channel.send(`<@!${args.member.id}> does not have a nickname`);
} else {
msg.channel.send(`The nickname of <@!${args.member.id}> is **${Util.escapeBold(args.nickname)}**`);
}
return;
}
if (msg.member.id !== args.member.id && !canActOn(pluginData, msg.member, args.member)) {
msg.channel.send(errorMessage("Cannot change nickname: insufficient permissions"));
return;
}
const nicknameLength = [...args.nickname].length;
if (nicknameLength < 2 || nicknameLength > 32) {
msg.channel.send(errorMessage("Nickname must be between 2 and 32 characters long"));
return;
}
const oldNickname = args.member.nickname || "<none>";
try {
await args.member.setNickname(args.nickname ?? null);
} catch {
msg.channel.send(errorMessage("Failed to change nickname"));
return;
}
sendSuccessMessage(
pluginData,
msg.channel,
`Changed nickname of <@!${args.member.id}> from **${oldNickname}** to **${args.nickname}**`,
);
},
});