【发布时间】:2020-12-27 13:01:20
【问题描述】:
最近,为了方便玩游戏,我想看看我是否可以制作一个 Discord Bot,它允许将来自一个通道的所有音频传输到另一个通道。想法是,您将拥有一种“观众”频道,供人们聊天,同时在另一个频道中收听“表演”,每个人都可以听到表演,而观众可以相互交谈。
如果我正确解释了this page of the Discord.js API Documentation,这应该可以。 “高级用法”部分似乎确实为我想要做的事情提供了一个代码 sn-p。
我可以让机器人将音频录制到我的计算机上,并从我的计算机上播放音频,但是从一个来源到另一个来源(即使在同一频道内)的流式语音对我来说似乎是不可能的。
我的代码如下。 有什么方法可以让我的 Discord 机器人将一个或多个用户声音从一个频道传输到另一个频道?
const Discord = require('discord.js');
const client = new Discord.Client();
const {prefix, token, help, transmit, recieve, end} = require('./config.json');
client.once('ready', () => {
console.log('Ready!');
});
let transmitting = false;
let t_channel;
let recieving = false;
let r_channel;
let t_connection;
let r_connection;
let sender;
let audio;
client.on('message', message => {
// Take command input
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(/ +/);
const command = args.shift().toLowerCase();
switch (command) {
case `${help}`:
message.channel.send(`Commands: ${transmit}, ${recieve}, ${end}`);
break
case `${transmit}`:
message.channel.send('Transmitting');
transmitting = true;
t_channel = message.member.voice.channel;
sender = message.author;
break;
case `${recieve}`:
message.channel.send('Receiving');
recieving = true;
r_channel = message.member.voice.channel;
break;
case `${end}`:
message.channel.send('Ending');
transmitting = false;
recieving = false;
end_broadcast();
break;
}
if (transmitting && recieving) {
broadcast();
}
});
async function broadcast() {
t_connection = await t_channel.join();
r_connection = await r_channel.join();
audio = t_connection.receiver.createStream(sender);
r_connection.play(audio, { type: 'opus' });
console.log("Working!");
}
async function end_broadcast() {
audio.destroy();
r_channel.leave();
t_connection.disconnect;
r_connection.disconnect;
}
client.login(token);
【问题讨论】:
-
你有没有让它工作?这听起来真的很酷而且很有用
-
@TenaciousB 目前还没有。已经有一段时间没有做这件事了,但不知何故,我什至无法让单个声音从一个频道流到另一个频道。如果您正在寻找这样的东西,我认为像 TeamSpeak 这样的软件可能值得研究,它似乎默认支持更复杂的语音通道操作。
-
我真的希望他们在某个时候不和谐地实施它,现在很难让任何人安装teampeak了
标签: javascript discord