diff --git a/functions.js b/functions.js index 8f74288..01466b5 100644 --- a/functions.js +++ b/functions.js @@ -662,6 +662,15 @@ const functions = { return newText + ' <:spongebob:1053398825965985822>'; }, + setNick(user, nickname) { + return new Promise((resolve, reject) => { + user.setNickname(nickname).then(() => { + resolve('Nickname set.'); + }).catch(err => { + reject(err); + }); + }); + }, autoresponses: { // Specific responses for certain keywords in sent messages checkForAll(messageContent) { let responses = []; diff --git a/slash-commands/setnick.js b/slash-commands/setnick.js new file mode 100644 index 0000000..f778c9a --- /dev/null +++ b/slash-commands/setnick.js @@ -0,0 +1,36 @@ +const { SlashCommandBuilder } = require('@discordjs/builders'); +const fn = require('../functions.js'); + +module.exports = { + data: new SlashCommandBuilder() + .setName('setnick') + .setDescription('Set a user\'s nickname.') + .addUserOption(o => + o.setName('user') + .setDescription('The user to set the nickname for.') + .setRequired(true) + ) + .addStringOption(o => + o.setName('nickname') + .setDescription('The nickname to set.') + .setRequired(true) + ), + async execute(interaction) { + try { + // Defer the reply, with ephemeral set to true + await interaction.deferReply({ ephemeral: true }); + // Get the user and nickname from the interaction + const user = interaction.options.getMember('user'); + const nickname = interaction.options.getString('nickname'); + + // Set the nickname + await fn.setNick(user, nickname); + + // Reply to the interaction + await interaction.editReply(`Successfully set ${user}'s nickname to ${nickname}`); + } catch (error) { + console.error(error); + await interaction.editReply('There was an error while executing this command!'); + } + }, +}; \ No newline at end of file