AeThex-Bot-Master/aethex-bot/scripts/register-commands.js
sirpiglr 42c2ba799f Update command registration to preserve existing entry points
Modify the command registration script to fetch and preserve existing entry point commands while registering new ones, using environment variables for DISCORD_BOT_TOKEN and DISCORD_CLIENT_ID.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: e72fc1b7-94bd-4d6c-801f-cbac2fae245c
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 713e3b6c-1c1e-474c-8cab-f254e83be29b
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/3bdfff67-975a-46ad-9845-fbb6b4a4c4b5/e72fc1b7-94bd-4d6c-801f-cbac2fae245c/MSxeu36
Replit-Helium-Checkpoint-Created: true
2025-12-07 22:35:55 +00:00

154 lines
3.5 KiB
JavaScript

const { REST, Routes } = require('discord.js');
require('dotenv').config();
const commands = [
{
name: 'ticket',
description: 'Ticket management system',
options: [
{
name: 'create',
type: 1,
description: 'Create a new support ticket',
options: [
{
name: 'reason',
type: 3,
description: 'Brief reason for opening this ticket',
required: true,
},
],
},
{
name: 'close',
type: 1,
description: 'Close the current ticket',
},
],
},
{
name: 'admin',
description: 'Admin monitoring commands',
default_member_permissions: '8',
options: [
{
name: 'status',
type: 1,
description: 'View bot status and statistics',
},
{
name: 'heat',
type: 1,
description: 'Check heat level of a user',
options: [
{
name: 'user',
type: 6,
description: 'User to check',
required: true,
},
],
},
{
name: 'servers',
type: 1,
description: 'View all servers the bot is in',
},
{
name: 'threats',
type: 1,
description: 'View current heat map (active threats)',
},
{
name: 'federation',
type: 1,
description: 'View federation role mappings',
},
],
},
{
name: 'federation',
description: 'Manage cross-server role sync',
default_member_permissions: '8',
options: [
{
name: 'link',
type: 1,
description: 'Link a role for cross-server syncing',
options: [
{
name: 'role',
type: 8,
description: 'Role to sync across realms',
required: true,
},
],
},
{
name: 'unlink',
type: 1,
description: 'Remove a role from cross-server syncing',
options: [
{
name: 'role',
type: 8,
description: 'Role to remove from sync',
required: true,
},
],
},
{
name: 'list',
type: 1,
description: 'List all linked roles',
},
],
},
{
name: 'status',
description: 'View network status and bot health',
},
];
const token = process.env.DISCORD_BOT_TOKEN;
const clientId = process.env.DISCORD_CLIENT_ID;
if (!token) {
console.error('Missing DISCORD_BOT_TOKEN');
process.exit(1);
}
if (!clientId) {
console.error('Missing DISCORD_CLIENT_ID');
process.exit(1);
}
const rest = new REST({ version: '10' }).setToken(token);
(async () => {
try {
console.log('Fetching existing commands...');
const existingCommands = await rest.get(
Routes.applicationCommands(clientId)
);
console.log(`Found ${existingCommands.length} existing commands`);
const entryPointCommands = existingCommands.filter(cmd => cmd.type === 4);
const allCommands = [...commands, ...entryPointCommands];
console.log(`Registering ${commands.length} commands (preserving ${entryPointCommands.length} entry points)...`);
const data = await rest.put(
Routes.applicationCommands(clientId),
{ body: allCommands }
);
console.log(`Successfully registered ${data.length} commands`);
data.forEach(cmd => console.log(` - /${cmd.name}`));
} catch (error) {
console.error('Error registering commands:', error);
}
})();