Create Discord slash commands registration script
cgen-fb58db8a464240c899ab597a2002d353
This commit is contained in:
parent
8e684d545b
commit
b3f92fe96d
1 changed files with 120 additions and 0 deletions
120
scripts/register-discord-commands.ts
Normal file
120
scripts/register-discord-commands.ts
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
/**
|
||||||
|
* Register Discord Slash Commands
|
||||||
|
* Run this script once to register all slash commands with Discord
|
||||||
|
*
|
||||||
|
* Usage:
|
||||||
|
* npx ts-node scripts/register-discord-commands.ts
|
||||||
|
*
|
||||||
|
* Required Environment Variables:
|
||||||
|
* - DISCORD_BOT_TOKEN: Bot token from Discord Developer Portal
|
||||||
|
* - DISCORD_CLIENT_ID: Application ID from Discord Developer Portal
|
||||||
|
*/
|
||||||
|
|
||||||
|
const DISCORD_CLIENT_ID = process.env.DISCORD_CLIENT_ID || "578971245454950421";
|
||||||
|
const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN;
|
||||||
|
|
||||||
|
if (!DISCORD_BOT_TOKEN) {
|
||||||
|
console.error(
|
||||||
|
"❌ DISCORD_BOT_TOKEN environment variable is required",
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const commands = [
|
||||||
|
{
|
||||||
|
name: "creators",
|
||||||
|
description: "Browse AeThex creators across all arms",
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: "arm",
|
||||||
|
description:
|
||||||
|
"Filter by specific arm (labs, gameforge, corp, foundation, nexus)",
|
||||||
|
type: 3, // STRING
|
||||||
|
required: false,
|
||||||
|
choices: [
|
||||||
|
{ name: "Labs", value: "labs" },
|
||||||
|
{ name: "GameForge", value: "gameforge" },
|
||||||
|
{ name: "Corp", value: "corp" },
|
||||||
|
{ name: "Foundation", value: "foundation" },
|
||||||
|
{ name: "Nexus", value: "nexus" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "opportunities",
|
||||||
|
description: "Find job opportunities and collaborations on Nexus",
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
name: "arm",
|
||||||
|
description:
|
||||||
|
"Filter by specific arm (labs, gameforge, corp, foundation, nexus)",
|
||||||
|
type: 3, // STRING
|
||||||
|
required: false,
|
||||||
|
choices: [
|
||||||
|
{ name: "Labs", value: "labs" },
|
||||||
|
{ name: "GameForge", value: "gameforge" },
|
||||||
|
{ name: "Corp", value: "corp" },
|
||||||
|
{ name: "Foundation", value: "foundation" },
|
||||||
|
{ name: "Nexus", value: "nexus" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "nexus",
|
||||||
|
description: "Explore the AeThex Talent Marketplace",
|
||||||
|
options: [],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
async function registerCommands() {
|
||||||
|
console.log(`📝 Registering ${commands.length} slash commands...`);
|
||||||
|
console.log(`🔧 Client ID: ${DISCORD_CLIENT_ID}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
const response = await fetch(
|
||||||
|
`https://discord.com/api/v10/applications/${DISCORD_CLIENT_ID}/commands`,
|
||||||
|
{
|
||||||
|
method: "PUT",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
Authorization: `Bot ${DISCORD_BOT_TOKEN}`,
|
||||||
|
},
|
||||||
|
body: JSON.stringify(commands),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
const errorData = await response.text();
|
||||||
|
console.error(
|
||||||
|
"❌ Failed to register commands:",
|
||||||
|
response.status,
|
||||||
|
errorData,
|
||||||
|
);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await response.json();
|
||||||
|
console.log(`✅ Successfully registered ${data.length} slash commands!`);
|
||||||
|
|
||||||
|
data.forEach((cmd: any) => {
|
||||||
|
console.log(` ✓ /${cmd.name} - ${cmd.description}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log("\n📍 Next steps:");
|
||||||
|
console.log(
|
||||||
|
"1. Go to Discord Developer Portal > Application Settings",
|
||||||
|
);
|
||||||
|
console.log(
|
||||||
|
"2. Set Interactions Endpoint URL to: https://aethex.dev/api/discord/interactions",
|
||||||
|
);
|
||||||
|
console.log("3. Save changes");
|
||||||
|
console.log("4. Test commands in Discord with /creators, /opportunities, etc.");
|
||||||
|
} catch (error) {
|
||||||
|
console.error("❌ Error registering commands:", error);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
registerCommands();
|
||||||
Loading…
Reference in a new issue