From 7bd44bd6531d78e413fe67757c00169fdb8159da Mon Sep 17 00:00:00 2001 From: admin_rb Date: Mon, 8 Jun 2026 20:57:40 +0200 Subject: [PATCH] clean slate, birthday fix --- buttons/honor/honors_leaderboard_left.js | 2 +- buttons/honor/honors_leaderboard_right.js | 2 +- buttons/honor/honors_leaderboard_self.js | 2 +- buttons/nuts/nuts_leaderboard_left.js | 2 +- buttons/nuts/nuts_leaderboard_right.js | 2 +- buttons/nuts/nuts_leaderboard_self.js | 2 +- commands/legacy/nuts/nutsGet.js | 11 +++++++---- commands/legacy/nuts/nutsLeaderboard.js | 2 +- commands/slash/admin/birthdays.js | 15 ++------------- commands/slash/admin/config.js | 3 ++- commands/slash/applications/honors.js | 2 +- commands/slash/applications/nuts.js | 15 +++++++++------ events/ClientReady.js | 2 +- 13 files changed, 29 insertions(+), 33 deletions(-) diff --git a/buttons/honor/honors_leaderboard_left.js b/buttons/honor/honors_leaderboard_left.js index bc40040..f3aec09 100644 --- a/buttons/honor/honors_leaderboard_left.js +++ b/buttons/honor/honors_leaderboard_left.js @@ -23,7 +23,7 @@ module.exports = { }) const embed = new EmbedBuilder() .setTitle('Honors Leaderboard') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/buttons/honor/honors_leaderboard_right.js b/buttons/honor/honors_leaderboard_right.js index 4c9f05f..2e31bc0 100644 --- a/buttons/honor/honors_leaderboard_right.js +++ b/buttons/honor/honors_leaderboard_right.js @@ -21,7 +21,7 @@ module.exports = { }) const embed = new EmbedBuilder() .setTitle('Honors Leaderboard') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/buttons/honor/honors_leaderboard_self.js b/buttons/honor/honors_leaderboard_self.js index f357b16..e915053 100644 --- a/buttons/honor/honors_leaderboard_self.js +++ b/buttons/honor/honors_leaderboard_self.js @@ -31,7 +31,7 @@ module.exports = { }) const embed = new EmbedBuilder() .setTitle('Honors Leaderboard') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/buttons/nuts/nuts_leaderboard_left.js b/buttons/nuts/nuts_leaderboard_left.js index 7a557a9..830300b 100644 --- a/buttons/nuts/nuts_leaderboard_left.js +++ b/buttons/nuts/nuts_leaderboard_left.js @@ -23,7 +23,7 @@ module.exports = { }) const embed = new EmbedBuilder() .setTitle('Nuts Leaderboard') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/buttons/nuts/nuts_leaderboard_right.js b/buttons/nuts/nuts_leaderboard_right.js index 840a6da..e160006 100644 --- a/buttons/nuts/nuts_leaderboard_right.js +++ b/buttons/nuts/nuts_leaderboard_right.js @@ -21,7 +21,7 @@ module.exports = { }) const embed = new EmbedBuilder() .setTitle('Nuts Leaderboard') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/buttons/nuts/nuts_leaderboard_self.js b/buttons/nuts/nuts_leaderboard_self.js index 2eb9fe1..05b91a9 100644 --- a/buttons/nuts/nuts_leaderboard_self.js +++ b/buttons/nuts/nuts_leaderboard_self.js @@ -31,7 +31,7 @@ module.exports = { }) const embed = new EmbedBuilder() .setTitle('Nuts Leaderboard') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/commands/legacy/nuts/nutsGet.js b/commands/legacy/nuts/nutsGet.js index 5866f38..6a8c3c2 100644 --- a/commands/legacy/nuts/nutsGet.js +++ b/commands/legacy/nuts/nutsGet.js @@ -50,12 +50,15 @@ module.exports = { { $inc: { [`stat.${amount}`]: 1 } }, { upsert: true } ) - let content = `Du hast ${amount} Nüsse bekommen! :chestnut:` - if (!amount) { - content = `Du hast leider keine Nüsse bekommen :(` + // Helper for singular/plural + const formatNut = (amount) => `${amount === 1 ? 'eine' : amount} ${amount === 1 ? 'Nuss' : 'Nüsse'}` + + let nutText = `Du hast ${formatNut(amount)} bekommen! :chestnut:` + if (amount <= 0) { + nutText = `Du hast keine Nuss bekommen! :yoink_help:` } return await message.reply({ - content: content + content: nutText }) } } \ No newline at end of file diff --git a/commands/legacy/nuts/nutsLeaderboard.js b/commands/legacy/nuts/nutsLeaderboard.js index 6f47d08..e22d91a 100644 --- a/commands/legacy/nuts/nutsLeaderboard.js +++ b/commands/legacy/nuts/nutsLeaderboard.js @@ -37,7 +37,7 @@ module.exports = { }) const embed = new EmbedBuilder() .setTitle('Nuts Leaderboard') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(message.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/commands/slash/admin/birthdays.js b/commands/slash/admin/birthdays.js index 9f16893..e4d0f8e 100644 --- a/commands/slash/admin/birthdays.js +++ b/commands/slash/admin/birthdays.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, EmbedBuilder, MessageFlags } = require('discord.js') +const { SlashCommandBuilder, EmbedBuilder, MessageFlags, PermissionFlagsBits } = require('discord.js') const { mClient } = require('../../../index') const { configDotenv } = require('dotenv') configDotenv() @@ -144,6 +144,7 @@ module.exports = { data: new SlashCommandBuilder() .setName('birthday') .setDescription('manage birthdays') + .setDefaultMemberPermissions(PermissionFlagsBits.ManageRoles) .addSubcommand(s => s .setName('set') @@ -185,21 +186,9 @@ module.exports = { async execute(interaction) { switch (interaction.options._subcommand) { case 'set': - if (!interaction.member.permissions.has("ADMINISTRATOR")) { - return await interaction.reply({ - content: "Unprivileged Access!", - flags: MessageFlags.Ephemeral - }) - } birthdaySet(interaction) break; case 'delete': - if (!interaction.member.permissions.has("ADMINISTRATOR")) { - return await interaction.reply({ - content: "Unprivileged Access!", - flags: MessageFlags.Ephemeral - }) - } birthdayDelete(interaction) break; case 'get': diff --git a/commands/slash/admin/config.js b/commands/slash/admin/config.js index 23dc6a0..17adffd 100644 --- a/commands/slash/admin/config.js +++ b/commands/slash/admin/config.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, Events, MessageFlags } = require('discord.js') +const { SlashCommandBuilder, Events, MessageFlags, PermissionFlagsBits } = require('discord.js') const { mClient } = require('../../../index') require('dotenv').config() @@ -80,6 +80,7 @@ module.exports = { data: new SlashCommandBuilder() .setName('config') .setDescription('configurations for admins') + .setDefaultMemberPermissions(PermissionFlagsBits.ManageChannels) .addSubcommandGroup(sg => sg .setName('channels') diff --git a/commands/slash/applications/honors.js b/commands/slash/applications/honors.js index 841ccc4..4bc6ea5 100644 --- a/commands/slash/applications/honors.js +++ b/commands/slash/applications/honors.js @@ -103,7 +103,7 @@ async function honorLeaderboard(interaction) { }) const embed = new EmbedBuilder() .setTitle('- Honors Leaderboard -') - .setThumbnail(guild.iconURL({ dynamic: true})) + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') // Discord's blurple color .setFooter({ text: 'Use ◄ ► to navigate' }); diff --git a/commands/slash/applications/nuts.js b/commands/slash/applications/nuts.js index 180c90c..a0cfb8c 100644 --- a/commands/slash/applications/nuts.js +++ b/commands/slash/applications/nuts.js @@ -150,15 +150,14 @@ async function nutsLeaderboard(interaction) { const embed = new EmbedBuilder() .setTitle('Nuts Leaderboard') - .setThumbnail('attachment://nuts_main.png') + .setThumbnail(interaction.guild.iconURL({ dynamic: true})) .setDescription(fields.toString()) .setColor('#5865F2') .setFooter({ text: 'Use ◄ ► to navigate' }) await interaction.editReply({ embeds: [embed], - components: [row], - files: [`${asset_path}nuts_main.png`] + components: [row] }) } @@ -281,7 +280,7 @@ async function nutsNut(interaction, quickMode) { } // Helper for singular/plural - const formatNut = (amount) => `${amount} ${amount === 1 ? 'Nuss' : 'Nüsse'}` + const formatNut = (amount) => `${amount === 1 ? 'eine' : amount} ${amount === 1 ? 'Nuss' : 'Nüsse'}` // check cooldown if (cdData?.cooldown > Date.now() / 1000) { @@ -330,9 +329,13 @@ async function nutsNut(interaction, quickMode) { { upsert: true } ) + let nutText = `Du hast ${formatNut(amount)} bekommen! :chestnut:` + if (amount <= 0) { + nutText = `Du hast keine Nuss bekommen! :yoink_help:` + } if (quickMode) { - return interaction.editReply({ content: `Du hast ${formatNut(amount)} bekommen! :chestnut:` }) + return interaction.editReply({ content: nutText }) } // pseudo animation @@ -355,7 +358,7 @@ async function nutsNut(interaction, quickMode) { else if (amount > 4) assetFile = assets.normal else assetFile = assets.low - embed.setTitle(`Du hast ${formatNut(amount)} bekommen!`) + embed.setTitle(nutText) embed.setThumbnail(assetFile) embed.setImage(null) diff --git a/events/ClientReady.js b/events/ClientReady.js index d2d6a8f..242a3dd 100644 --- a/events/ClientReady.js +++ b/events/ClientReady.js @@ -54,7 +54,7 @@ module.exports = { console.error(`Failed to add birthday role to ${member.user.tag}:`, err) ); console.log(`Added birthday role to ${member.user.tag}`); - //client.emit('Birthday', member); + client.emit('Birthday', member); } else { // Default fallback: remove birthday role if present if (member.roles.cache.has(birthdayRoleID)) {