皆さん初めまして。Morichanと申します。
下記の※の記述を理解したうえで、記事を読んでください。
※DiscordBot開発初心者の書いた記事です。
(また、プログラミング自体、2年ほどのブランクあり)
BOTでVCに音楽を流す機能やBOTでVCを録音する機能までの流れに関しては、別の記事にまとめてあります。
関連記事:
- 【Windows11】Discord BOTを開発するための開発環境を整える。
- 【Discord.js V14】Discord BOTにスラッシュコマンドを実装してみる
- 【Discord.js V14】Discord BOTをVCに参加させてみる
- 【Discord.js V14】2つのBOTを別々のVCに参加させてみる
目次
開発環境
OS (Windows11)
discord.js (14.7.1)
node.js (18.13.0)
npm (8.19.3)
@discordjs/voice (^0.14.0)
テスト用のロールを作成、付与する
今回は仮にtestというロールを作成、付与して実行。
{
"LISTENER": {
"CLIENT_ID": "ここにBOT1のCLIENT_IDを記述",
"TOKEN": "ここにBOT1のTOKENを記述"
},
"SPEAKER": {
"CLIENT_ID": "ここにBOT2のCLIENT_IDを記述",
"TOKEN": "ここにBOT2のTOKENを記述"
}
"GUILD_ID": "ここにBOTを追加したサーバーのIDを記述",
"TEST_ROLE": "ここにtestというロールのIDを記述"
}
取得するVCの音声をロールによって判別する
-
stream.js
でuserIdからユーザーを取得する。
connection1.receiver.speaking.on('start', (userId) => {
let member = interaction.guild.members.cache.get(userId);
-
stream.js
にtestというロールがあるか判別するコードを記述する。
if (member.roles.cache.has(TEST_ROLE)) {
const standaloneInput = new AudioMixer.Input({
---(省略)---
rawStream.on('end', () => {
if (this.audioMixer != null) {
this.audioMixer.removeInput(standaloneInput);
standaloneInput.destroy();
rawStream.destroy();
p.destroy();
}
});
}
else {
return;
}
});
}
await interaction.reply('VCを中継します!');
-
node index.js
を行い、Discordでコマンド/stream
を入力。
無事に、テストというロールが付与されたユーザーの音声のみが中継されました。
関連記事
- 【Windows11】Discord BOTを開発するための開発環境を整える。
- 【Discord.js V14】Discord BOTにスラッシュコマンドを実装してみる
- 【Discord.js V14】Discord BOTをVCに参加させてみる
- 【Discord.js V14】2つのBOTを別々のVCに参加させてみる
- 【Discord.js V14】スラッシュコマンドのオプションで、既に選択済みの選択肢を2つ目の引数のリストから消す。
- 【Discord.js V14】Discord BOTにVCに音楽を流す機能を実装してみる
- 【Discord.js V14】Discord BOTにVCから1人分の音声を取得して、録音する機能を実装してみる
- 【Discord.js V14】VC1からVC2に音声をStreaming(中継)するBOTを作成する。
- 【Discord.js V14】取得するVCの音声をロールによって判別する