const { SlashCommandBuilder, EmbedBuilder, ActionRowBuilder,
StringSelectMenuBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
// Manually define emojis using their IDs
const EMOJI_INFO = "<:info:1348290096620638362>";
const EMOJI_TICK = "<:tick_tick:1348271801481826315>";
const EMOJI_CROSS = "<a:cross_cross:1348070723243216946>";
const EMOJI_PARTNER = "<a:partner:1345899310511816750>";
const EMOJI_ANTINUKE = "<:antinuke:1345897693808951416>";
const EMOJI_AUTOMOD = "<:Automod:1345897951381164183>";
const EMOJI_FUN = "<a:trick_supreme:1344331473922297867>";
const EMOJI_GIVEAWAY = "<a:unnamed_emoji:1343351495394988094>";
const EMOJI_MODERATION = "<:moderation:1345901513515728927>";
const EMOJI_UTILITY = "<:OG_Commands:1345901067266691192>";
const EMOJI_TICKET = "<a:ticket:1345901724585427004>";
const EMOJI_ROLES = "<:roles1:1345902183140556860>";
const EMOJI_MIC = "<a:mic:1345902292670480384>";
const EMOJI_AUTOREACT = "<:Autoreact:1345902215356747828>";
const EMOJI_TRANSLATE = "<:translate:1346853740904317028>";
const categoryCommands = {
"Antinuke": `
/antinuke on → Enable Antinuke protection
/antinuke off → Disable Antinuke protection
/wl @user → Whitelist a user
/lc #channel → Set log channel`,
"Automod": `
/automod on → Enable Automod
/automod off → Disable Automod
/blacklist word → Add a word to the blacklist
/whitelist word → Remove a word from the blacklist`,
"Fun": `
/roast @user → Roast a user
/joke → Get a random joke
/fact → Get a random fun fact
/avatar @user → Show a user's avatar
/coinflip → Flip a coin
/8ball <question> → Ask the magic 8-ball`,
"Giveaway": `
/giveaway start → Start a giveaway
/giveaway reroll → Reroll a giveaway
/giveaway end → End a giveaway`,
"Ignore": `
/ignore channel → Ignore a channel
/unignore channel → Unignore a channel`,
"Moderation": `
/ban @user → Ban a user
/unban userID → Unban a user
/kick @user → Kick a user
/mute @user → Mute a user
/unmute @user → Unmute a user
/purge 10 → Delete 10 messages
/purge user @user 10 → Delete 10 messages from a user
/purge bots → Delete bot messages`,
"Utility": `
/afk <reason> → Set AFK status
/role @user @role → Add/remove a role
/rolelist @role → List members with a role
/roleicon @role <emoji> → Set a role icon
/data @user → Get user info
/badges → Show your badges
/ping → Check bot's latency
/prefix → Show current bot prefix
/prefix set <prefix> → Change bot prefix
/stats → Show bot statistics
/steal <emoji> → Steal an emoji`,
"Ticket": `
/ticket create → Create a ticket
/ticket close → Close a ticket
/ticket add @user → Add a user to a ticket
/ticket remove @user → Remove a user from a ticket`,
"Custom Roles": `
/role create <name> → Create a custom role
/role delete <role> → Delete a custom role
/role color <role> <hex> → Change a role's color`,
"TempVoice": `
/voice create → Create a temporary voice channel
/voice limit <number> → Set a user limit
/voice name <name> → Change the channel name`,
"Autoreact": `
/autoreact add <trigger> <emoji> → Add an auto-reaction
/autoreact remove <trigger> → Remove an auto-reaction
/autoreact list → List all auto-reactions`,
"Translate": `
/translate <language> <text> → Translate text
/translate list → List supported languages`
};
module.exports = {
data: new SlashCommandBuilder()
.setName('help')
.setDescription('Shows the help menu'),
async execute(interaction) {
const mainEmbed = new EmbedBuilder()
.setTitle(`${EMOJI_PARTNER} Azynox Help Panel`)
.setDescription(
`${EMOJI_INFO} **Prefix on this server:** \`/\`\n` +
`${EMOJI_INFO} Type \`/help <category>\` for more info\n` +
`${EMOJI_INFO} **Total commands:** 85\n\n` +
`${EMOJI_PARTNER} **Main Categories**\n\n` +
`${EMOJI_ANTINUKE} **Antinuke**\n` +
`${EMOJI_AUTOMOD} **Automod**\n` +
`${EMOJI_FUN} **Fun**\n` +
`${EMOJI_GIVEAWAY} **Giveaway**\n` +
`${EMOJI_CROSS} **Ignore**\n` +
`${EMOJI_MODERATION} **Moderation**\n` +
`${EMOJI_UTILITY} **Utility**\n` +
`${EMOJI_TICKET} **Ticket**\n` +
`${EMOJI_ROLES} **Custom Roles**\n` +
`${EMOJI_MIC} **TempVoice**\n` +
`${EMOJI_AUTOREACT} **Autoreact**\n` +
`${EMOJI_TRANSLATE} **Translate**`
)
.setColor(0x00ff00)
.setFooter({
text: `Requested by ${interaction.user.tag}`,
iconURL: interaction.user.displayAvatarURL()
})
.setThumbnail(interaction.client.user.displayAvatarURL());
const selectMenu = new StringSelectMenuBuilder()
.setCustomId('help_select')
.setPlaceholder('Select a category...')
.addOptions([
{ label: 'Home', emoji: '🏠', description: 'Go back to the main help
menu' },
{ label: 'Antinuke', emoji: EMOJI_ANTINUKE, description: 'View
Antinuke commands' },
{ label: 'Automod', emoji: EMOJI_AUTOMOD, description: 'View
Automod commands' },
{ label: 'Fun', emoji: EMOJI_FUN, description: 'View Fun
commands' },
{ label: 'Giveaway', emoji: EMOJI_GIVEAWAY, description: 'View
Giveaway commands' },
{ label: 'Ignore', emoji: EMOJI_CROSS, description: 'View Ignore
commands' },
{ label: 'Moderation', emoji: EMOJI_MODERATION, description: 'View
Moderation commands' },
{ label: 'Utility', emoji: EMOJI_UTILITY, description: 'View
Utility commands' },
{ label: 'Ticket', emoji: EMOJI_TICKET, description: 'View Ticket
commands' },
{ label: 'Custom Roles', emoji: EMOJI_ROLES, description: 'View
Custom Roles commands' },
{ label: 'TempVoice', emoji: EMOJI_MIC, description: 'View
TempVoice commands' },
{ label: 'Autoreact', emoji: EMOJI_AUTOREACT, description: 'View
Autoreact commands' },
{ label: 'Translate', emoji: EMOJI_TRANSLATE, description: 'View
Translate commands' }
]);
const inviteButton = new ButtonBuilder()
.setLabel('Invite Me')
.setURL('https://discord.com/oauth2/authorize?
client_id=YOUR_CLIENT_ID&permissions=8&scope=bot')
.setStyle(ButtonStyle.Link);
const supportButton = new ButtonBuilder()
.setLabel('Support')
.setURL('https://discord.gg/YOUR_SUPPORT_SERVER')
.setStyle(ButtonStyle.Link);
const row1 = new ActionRowBuilder().addComponents(selectMenu);
const row2 = new ActionRowBuilder().addComponents(inviteButton,
supportButton);
await interaction.reply({
embeds: [mainEmbed],
components: [row1, row2],
ephemeral: true
});
},
async handleSelect(interaction) {
const selectedCategory = interaction.values[0];
if (selectedCategory === 'Home') {
const mainEmbed = new EmbedBuilder()
.setTitle(`${EMOJI_PARTNER} Azynox Help Panel`)
.setDescription(
`${EMOJI_INFO} **Prefix on this server:** \`/\`\n` +
`${EMOJI_INFO} Type \`/help <category>\` for more info\n` +
`${EMOJI_INFO} **Total commands:** 85\n\n` +
`${EMOJI_PARTNER} **Main Categories**\n\n` +
`${EMOJI_ANTINUKE} **Antinuke**\n` +
`${EMOJI_AUTOMOD} **Automod**\n` +
`${EMOJI_FUN} **Fun**\n` +
`${EMOJI_GIVEAWAY} **Giveaway**\n` +
`${EMOJI_CROSS} **Ignore**\n` +
`${EMOJI_MODERATION} **Moderation**\n` +
`${EMOJI_UTILITY} **Utility**\n` +
`${EMOJI_TICKET} **Ticket**\n` +
`${EMOJI_ROLES} **Custom Roles**\n` +
`${EMOJI_MIC} **TempVoice**\n` +
`${EMOJI_AUTOREACT} **Autoreact**\n` +
`${EMOJI_TRANSLATE} **Translate**`
)
.setColor(0x00ff00)
.setFooter({
text: `Requested by ${interaction.user.tag}`,
iconURL: interaction.user.displayAvatarURL()
})
.setThumbnail(interaction.client.user.displayAvatarURL());
await interaction.update({ embeds: [mainEmbed] });
return;
}
const categoryEmbed = new EmbedBuilder()
.setTitle(`${selectedCategory} Commands`)
.setDescription(categoryCommands[selectedCategory])
.setColor(0x00ff00)
.setFooter({
text: `Requested by ${interaction.user.tag}`,
iconURL: interaction.user.displayAvatarURL()
});
await interaction.update({ embeds: [categoryEmbed] });
}
};