-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy_commands.js
More file actions
65 lines (54 loc) · 1.79 KB
/
deploy_commands.js
File metadata and controls
65 lines (54 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import { REST, Routes } from "discord.js";
import JSONConfig from "./config.json" with { type: "json" };
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath, pathToFileURL } from "node:url";
// Recreate __dirname
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Load command files
const commandsPath = path.join(__dirname, "commands");
const commandFiles = fs
.readdirSync(commandsPath)
.filter((file) => file.endsWith(".js"));
const guildCommands = [];
const adminCommands = [];
for (const file of commandFiles) {
const filePath = pathToFileURL(path.join(commandsPath, file)).href;
const command = await import(filePath);
if ("data" in command && typeof command.data.toJSON === "function") {
const json = command.data.toJSON();
const isAdmin = command.meta?.adminOnly === true;
if (isAdmin) {
adminCommands.push(json);
} else {
guildCommands.push(json);
}
} else {
console.warn(
`[WARNING] The command at ${file} is missing a "data" property or toJSON method.`,
);
}
}
// Register commands with Discord
const rest = new REST({ version: "10" }).setToken(JSONConfig.discordToken);
try {
console.log(
`Started refreshing ${guildCommands.length} guild commands and ${adminCommands.length} admin commands.`,
);
const guildResult = await rest.put(
Routes.applicationGuildCommands(JSONConfig.clientId, JSONConfig.guildId),
{ body: guildCommands },
);
const adminResult = await rest.put(
Routes.applicationGuildCommands(
JSONConfig.clientId,
JSONConfig.adminGuildId,
),
{ body: adminCommands },
);
console.log(`Successfully reloaded ${guildResult.length} guild commands.`);
console.log(`Successfully reloaded ${adminResult.length} admin commands.`);
} catch (error) {
console.error(error);
}