Discord.js 当有人加入语音频道时播放音频文件

Discord.js 当有人加入语音频道时播放音频文件,discord.js,Discord.js,我学习了一些教程并获得了一些帮助,但无论我尝试什么,它都会在播放文件中不断显示错误。机器人也可以播放音乐,但音乐(通过链接)部分工作正常。那么,我如何播放根文件夹中的音频文件,并且只有当有人加入语音频道时才能播放 bot.on('voiceStateUpdate',(旧成员、新成员)=>{ //这里我存储了他们的语音频道的ID(如果有的话) 让oldChannel=oldMember.voiceChannel?oldMember.voiceChannel.id:null; 让newChannel

我学习了一些教程并获得了一些帮助,但无论我尝试什么,它都会在
播放文件中不断显示错误。机器人也可以播放音乐,但音乐(通过链接)部分工作正常。那么,我如何播放根文件夹中的音频文件,并且只有当有人加入语音频道时才能播放

bot.on('voiceStateUpdate',(旧成员、新成员)=>{
//这里我存储了他们的语音频道的ID(如果有的话)
让oldChannel=oldMember.voiceChannel?oldMember.voiceChannel.id:null;
让newChannel=newMember.voiceChannel?newMember.voiceChannel.id:null;
if(oldChannel==newChannel)return;//如果没有更改,则退出
//这里我得到的是机器人的频道(bot.voiceChannel不存在)
让botMember=oldMember.guild.member(bot.user),
botChannel=botMember?botMember.voiceChannel.id:空;
var server=servers[botMember.guild.id];
//这里我得到了频道,只要用频道的ID替换VVV这个VVV
让textChannel=oldMember.guild.channels.get('43802550565249408');
如果(!textChannel)抛出新错误(“该通道不存在”);
//在这里,我不需要检查它们是否相同,因为它以前会退出
if(新通道===botChannel){
//log(“用户加入”);
server.dispatcher=botMember.voiceConnection.playFile('./audiofile.mp3');
textChannel.send(newMember.displayName+“已加入”);
}else if(oldChannel==botChannel){
//log(“用户离开”);
textChannel.send(newMember.displayName+“left.”);
}
});

旁注:您使用的是
GuildMember.voiceConnection
,但该属性不存在。在文档中查找

的文档说明
文件
参数必须是绝对路径(如
C:/yourfolder/audio.mp3
)。要将相对路径(
/audio.mp3
)转换为绝对路径,需要将目录(存储在全局变量
\uu dirname
中)和相对路径连接起来:


let conn=bot.voiceConnections.get(newMember.guild.id);
如果(!conn)抛出新错误(“机器人不在语音频道中,请修复代码”);
让路径=_dirname+'/audiofile.mp3';
conn.playFile(路径);
或者,您可以使用
路径
模块()

let path=require('path').join('uuu dirname'。/audiofile.mp3');
conn.playFile(路径);

非常感谢。你昨天也帮了我,但当机器人离开时,我似乎对机器人有问题。控制台显示botChannel=botMember存在问题?botMember.voiceChannel.id:空;这是一个关键点。Id partlet conn=bot.voiceConnections.get(Message.guild.Id);有一个错误表示消息未定义第一条注释:如果有错误,则表示bot不在任何语音频道中。第二条注释:它不是
消息
,它是
消息
;变量是最重要的sensitive@Waldre我没有看到它在
voiceStateUpdate
中,我的坏消息。我已经编辑了我的答案哦xD谢谢,现在效果很好。它还有一个问题,当机器人离开语音频道时,它停止工作,并说它的“botChannel=botMember”有问题?botMember.voiceChannel.id:null;'并指向.id部分