-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
63 lines (51 loc) · 2.17 KB
/
index.js
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
あconst { Client, GatewayIntentBits, SlashCommandBuilder, REST, Routes } = require('discord.js');
const { token, clientId, guildId } = require('./config.json');
// Discordクライアントの作成
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
// スラッシュコマンドのデプロイ
const commands = [
new SlashCommandBuilder()
.setName('channel')
.setDescription('Manage channel')
.addSubcommand(subcommand =>
subcommand
.setName('name')
.setDescription('チャンネルの名前を変更します。')
.addStringOption(option =>
option.setName('text')
.setDescription('何というチャンネル名にしますか?')
.setRequired(true)))
].map(command => command.toJSON());
const rest = new REST({ version: '10' }).setToken(token);
(async () => {
try {
console.log('アプリケーション(/)コマンドのリフレッシュを開始。');
await rest.put(
Routes.applicationGuildCommands(clientId, guildId),
{ body: commands },
);
console.log('アプリケーション(/)コマンドのリロードに成功。');
} catch (error) {
console.error(error);
}
})();
// Botが準備できた時に呼ばれるイベント
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
const { commandName, options } = interaction;
if (commandName === 'channel' && options.getSubcommand() === 'name') {
// まず、インタラクションにすぐ応答する(遅延応答を通知)
await interaction.deferReply({ ephemeral: true });
try {
const newChannelName = options.getString('text');
await interaction.channel.setName(newChannelName);
// 遅延応答を編集して結果を伝える
await interaction.editReply(`チャンネル名を "${newChannelName}" に変更しました。`);
} catch (error) {
// エラー時の応答
await interaction.editReply('チャンネル名の変更に失敗しました。権限が足りない可能性があります。');
}
}
});
// Discord Botにログイン
client.login(token);