AeThex-Bot-Master/aethex-bot/commands/help.js
sirpiglr 6f5c37959f Add new commands and improve existing ones for better user experience
Introduces new commands like `/automod`, `/giveaway`, `/rolepanel`, and `/schedule`. Enhances existing commands such as `/announce`, `/help`, `/leaderboard`, `/profile`, and `/serverinfo` with new features and improved embed designs. Updates welcome and goodbye listeners with rich embeds. Fixes a critical issue in the `/rolepanel` command regarding channel fetching. Adds interaction handling for role buttons and giveaway entries.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: aed2e46d-25bb-4b73-81a1-bb9e8437c261
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Event-Id: eefee140-1301-4b6f-9439-2b0b883aa40a
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/3bdfff67-975a-46ad-9845-fbb6b4a4c4b5/aed2e46d-25bb-4b73-81a1-bb9e8437c261/qAaysIh
Replit-Helium-Checkpoint-Created: true
2025-12-08 07:24:49 +00:00

205 lines
7.7 KiB
JavaScript

const { SlashCommandBuilder, EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js");
module.exports = {
data: new SlashCommandBuilder()
.setName("help")
.setDescription("View all AeThex bot commands and features")
.addStringOption(option =>
option.setName('category')
.setDescription('Specific category to view')
.setRequired(false)
.addChoices(
{ name: '🔗 Account', value: 'account' },
{ name: '⚔️ Realms', value: 'realms' },
{ name: '📊 Community', value: 'community' },
{ name: '⭐ Leveling', value: 'leveling' },
{ name: '🛡️ Moderation', value: 'moderation' },
{ name: '🔧 Utility', value: 'utility' },
{ name: '⚙️ Admin', value: 'admin' }
)
),
async execute(interaction) {
const category = interaction.options.getString('category');
if (category) {
const embed = getCategoryEmbed(category);
return interaction.reply({ embeds: [embed], ephemeral: true });
}
const mainEmbed = new EmbedBuilder()
.setColor(0x7c3aed)
.setAuthor({
name: 'AeThex Bot Help',
iconURL: interaction.client.user.displayAvatarURL()
})
.setDescription('Welcome to AeThex Bot! Select a category below to view commands.')
.addFields(
{
name: "🔗 Account",
value: "`/verify` `/unlink` `/profile`",
inline: true,
},
{
name: "⚔️ Realms",
value: "`/set-realm` `/verify-role` `/refresh-roles`",
inline: true,
},
{
name: "📊 Community",
value: "`/stats` `/leaderboard` `/post` `/poll`",
inline: true,
},
{
name: "⭐ Leveling",
value: "`/rank` `/daily` `/badges`",
inline: true,
},
{
name: "🛡️ Moderation",
value: "`/warn` `/kick` `/ban` `/timeout` `/modlog`",
inline: true,
},
{
name: "🔧 Utility",
value: "`/userinfo` `/serverinfo` `/avatar`",
inline: true,
},
{
name: "⚙️ Admin",
value: "`/config` `/announce` `/embed` `/rolepanel`",
inline: true,
},
{
name: "🎉 Fun",
value: "`/giveaway` `/schedule`",
inline: true,
},
{
name: "🛡️ Auto-Mod",
value: "`/automod`",
inline: true,
}
)
.addFields({
name: "🔗 Quick Links",
value: "[AeThex Platform](https://aethex.dev) • [Creator Directory](https://aethex.dev/creators) • [Community Feed](https://aethex.dev/community/feed)",
inline: false,
})
.setFooter({
text: "Use /help [category] for detailed commands • AeThex Bot",
iconURL: interaction.client.user.displayAvatarURL()
})
.setTimestamp();
const selectMenu = new StringSelectMenuBuilder()
.setCustomId('help_category')
.setPlaceholder('Select a category for details...')
.addOptions([
{ label: 'Account', description: 'Link and manage your account', emoji: '🔗', value: 'account' },
{ label: 'Realms', description: 'Realm selection and roles', emoji: '⚔️', value: 'realms' },
{ label: 'Community', description: 'Community features', emoji: '📊', value: 'community' },
{ label: 'Leveling', description: 'XP and leveling system', emoji: '⭐', value: 'leveling' },
{ label: 'Moderation', description: 'Moderation tools', emoji: '🛡️', value: 'moderation' },
{ label: 'Utility', description: 'Utility commands', emoji: '🔧', value: 'utility' },
{ label: 'Admin', description: 'Admin and config', emoji: '⚙️', value: 'admin' },
]);
const row = new ActionRowBuilder().addComponents(selectMenu);
await interaction.reply({ embeds: [mainEmbed], components: [row], ephemeral: true });
},
};
function getCategoryEmbed(category) {
const categories = {
account: {
title: '🔗 Account Commands',
color: 0x3b82f6,
commands: [
{ name: '/verify', desc: 'Link your Discord account to AeThex' },
{ name: '/unlink', desc: 'Disconnect your Discord from AeThex' },
{ name: '/profile [@user]', desc: 'View your or another user\'s AeThex profile' },
]
},
realms: {
title: '⚔️ Realm Commands',
color: 0xf97316,
commands: [
{ name: '/set-realm', desc: 'Choose your primary realm (Labs, GameForge, Corp, Foundation, Dev-Link)' },
{ name: '/verify-role', desc: 'Check your assigned Discord roles' },
{ name: '/refresh-roles', desc: 'Sync your roles based on AeThex profile' },
]
},
community: {
title: '📊 Community Commands',
color: 0x22c55e,
commands: [
{ name: '/stats', desc: 'View your AeThex statistics and activity' },
{ name: '/leaderboard [category]', desc: 'See the top contributors' },
{ name: '/post', desc: 'Create a post in the AeThex community feed' },
{ name: '/poll', desc: 'Create a community poll' },
{ name: '/studio [@user]', desc: 'View AeThex Studio profile' },
{ name: '/foundation [@user]', desc: 'View Foundation contributions' },
]
},
leveling: {
title: '⭐ Leveling Commands',
color: 0xfbbf24,
commands: [
{ name: '/rank [@user]', desc: 'View your level and unified XP' },
{ name: '/daily', desc: 'Claim your daily XP bonus (+50 base + streak)' },
{ name: '/badges', desc: 'View earned badges across platforms' },
]
},
moderation: {
title: '🛡️ Moderation Commands',
color: 0xef4444,
commands: [
{ name: '/warn @user [reason]', desc: 'Warn a user' },
{ name: '/kick @user [reason]', desc: 'Kick a user from the server' },
{ name: '/ban @user [reason]', desc: 'Ban a user from the server' },
{ name: '/timeout @user [minutes] [reason]', desc: 'Timeout a user' },
{ name: '/modlog @user', desc: 'View a user\'s moderation history' },
{ name: '/auditlog', desc: 'View admin action history' },
]
},
utility: {
title: '🔧 Utility Commands',
color: 0x8b5cf6,
commands: [
{ name: '/userinfo [@user]', desc: 'View detailed user information' },
{ name: '/serverinfo', desc: 'View server statistics and info' },
{ name: '/avatar [@user]', desc: 'Get a user\'s avatar' },
{ name: '/status', desc: 'View network status' },
]
},
admin: {
title: '⚙️ Admin Commands',
color: 0x6b7280,
commands: [
{ name: '/config', desc: 'View and edit server configuration' },
{ name: '/announce', desc: 'Send cross-server announcements' },
{ name: '/embed', desc: 'Create custom embed messages' },
{ name: '/rolepanel', desc: 'Create role button panels' },
{ name: '/giveaway', desc: 'Create and manage giveaways' },
{ name: '/schedule', desc: 'Schedule messages for later' },
{ name: '/automod', desc: 'Configure auto-moderation' },
{ name: '/admin', desc: 'Bot administration commands' },
{ name: '/federation', desc: 'Manage cross-server role sync' },
{ name: '/ticket', desc: 'Manage support tickets' },
]
}
};
const cat = categories[category] || categories.account;
return new EmbedBuilder()
.setColor(cat.color)
.setTitle(cat.title)
.setDescription(cat.commands.map(c => `**${c.name}**\n${c.desc}`).join('\n\n'))
.setFooter({ text: 'Use /help to see all categories' })
.setTimestamp();
}
module.exports.getCategoryEmbed = getCategoryEmbed;