所以我想为Discord频道提供一个Discord机器人,所以我在线搜索了一个教程。我在YouTube上找到了一个教程,它有点旧,但是很好,问题是我遵循了该教程,但遇到了一些问题:
歌曲的队列不起作用,如果我正在播放歌曲,然后尝试将其放入队列,它将停止播放当前的歌曲,并开始播放我尝试添加到队列中的歌曲
!stop命令不起作用,不确定为什么。
前缀不起作用,因此我设置为“!”作为前缀,因此该命令仅在您输入“!”后才有效在它的最前面,但是如果我在它们的最前面放置任何命令,命令就会起作用,因此,如果我像这样键入它们,请!
在此之前我还没有编程过任何东西,这是我第一次尝试使用任何编程语言。我通过在线搜索解决了一些问题,例如,voiceChannel是voice.channel之类的东西。通过这个机器人,我正在使用FFMPEG,ytdl-core和opusscript。
我将在下面粘贴代码(出于明显的原因,我将取出机器人令牌),希望有人能帮助我。
const {
Client,
Attachment
} = require('discord.js');
const bot = new Client();
const ytdl = require("ytdl-core");
const token = 'BOT TOKEN';
const PREFIX = '!';
var version = '4.2.0';
var servers = {};
bot.on('ready', () => {
console.log('This bot is online! ' + version);
})
bot.on('message', message => {
let args = message.content.substring(PREFIX.length).split(" ");
switch (args[0]) {
case 'play':
function play(connection, message){
var server = servers[message.guild.id];
server.dispatcher = connection.play(ytdl(server.queue[0], {filter: "audioonly"}));
server.queue.shift();
server.dispatcher.on("end", function(){
if(server.queue[0]){
play(connection, message);
}else {
connection.disconnect();
}
});
}
if(!args[1]){
message.channel.send("**`You need to provide a link!`**");
return;
}
if(!message.member.voice.channel){
message.channel.send("**`You must be in a voice channel to play music through the bot!`**");
return;
}
if(!servers[message.guild.id]) servers[message.guild.id] = {
queue: []
}
var server = servers[message.guild.id];
server.queue.push(args[1]);
if(!message.guild.voiceConnection) message.member.voice.channel.join().then(function(connection){
play(connection, message);
})
break;
case 'skip':
var server = servers[message.guild.id];
if(server.dispatcher) server.dispatcher.end();
message.channel.send("Skipping the song!")
break;
case 'stop':
var server = servers[message.guild.id];
if(message.guild.voiceConnection){
for(var i = server.queue.length -1; i >=0; i--){
server.queue.splice(i, 1);
}
server.dispatcher.end();
message.channel.send("Ending the queue and leaving the voice channel!")
console.log('stopped the queue!')
}
if(message.guild.connection) message.guild.voiceConnection.disconnect();
break;
}
});
bot.login(token);
P.S。抱歉,英语不是我的母语,我希望不会有很多拼写错误