【问题标题】:If specific player joins VoiceServer如果特定玩家加入 VoiceServer
【发布时间】:2018-07-14 14:47:51
【问题描述】:
我创建了一个 DiscordBot,我想在特定用户加入 VoiceChannel 时播放声音。就像我加入时,我的 Bot 播放“Hello.mp3”,而当 Bob 加入时,我的 Bot 播放“John.mp3”。
我知道我需要一个 if 子句,但接下来呢?
我如何检查来自 VoiceConnect 的用户 ID 是否等于“19923Example”?
你的
SchinkTasia
【问题讨论】:
标签:
javascript
bots
discord.js
【解决方案1】:
您可以订阅 voiceStateUpdate,这将在有人加入/离开语音频道时通知机器人。你会得到一个oldMember 和一个newMember。
oldMember是GuildMember之前加入语音频道。
newMember是GuildMember之后加入语音频道。
所以你需要做的是检查newMember加入的语音频道(newMember.voiceChannelID),并检查那是否是你想要的语音频道。
然后你需要检查那是什么成员。 newMember.user.id 如果您检查 ID 或 newMember.user.tag 如果您正在检查标签 Test#1234。
如果您没有数据库,或者只有几个成员,您可以使用一个对象来保存每个成员 ID 和要播放的音乐。
var musics = { "123": "music1.mp3", "321": "music2.mp3"};
如果一切匹配,您可以加入新会员语音频道并播放歌曲:
newMember.voiceChannel.join().then(connection => {
const dispatcher = connection.playFile('path/to/'+musics[newMember.user.id]);
}