diff --git a/.gitea/workflows/production-docker.yml b/.gitea/workflows/production-docker.yml index f76f0e6..c405566 100644 --- a/.gitea/workflows/production-docker.yml +++ b/.gitea/workflows/production-docker.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Pull latest from Git run: | - echo "Branch: tags/${{ gitea.ref_name }}" + echo "Branch: ${{ gitea.ref_name }}" pwd whoami mkdir -p /var/lib/act_runner/ @@ -24,10 +24,12 @@ jobs: git clone https://git.vfsh.dev/voidf1sh/nodbot cd nodbot else + rm -rf nodbot + git clone https://git.vfsh.dev/voidf1sh/nodbot cd nodbot git pull fi - git checkout tags/${{ gitea.ref_name }} + git checkout ${{ gitea.ref_name }} - name: Build the Docker image run: | cd /var/lib/act_runner/nodbot diff --git a/CHANGELOG.md b/CHANGELOG.md index 34b3e20..a89fa08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ ## v3.4.x +#### v3.4.1 +* Adding command to change nicknames + #### v3.4.0 (#25) * Added nested commands, enclose a command in brackets, braces, or parenthesis inside a longer message: `You really don't get it do you? [that's the joke.gif] You're so dense` would return the results for just `that's the joke.gif` * Improved the `/save gifsearch` interface and the code behind the scenes 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/package.json b/package.json index ed51b46..558e5f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nodbot", - "version": "3.4.0", + "version": "3.4.1", "description": "Nods and Nod Accessories", "main": "main.js", "dependencies": { diff --git a/slash-commands/setnick.js b/slash-commands/setnick.js new file mode 100644 index 0000000..f86b713 --- /dev/null +++ b/slash-commands/setnick.js @@ -0,0 +1,42 @@ +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); + if (error.code === 50013) { + return await interaction.editReply('I do not have permission to set the nickname of that user!'); + } + if (error.code === 50035) { + return await interaction.editReply('The nickname is too long!'); + } + await interaction.editReply('There was an error while executing this command!'); + } + }, +}; \ No newline at end of file