如果机器人在频道中,请忽略加入命令

时间:2020-05-25 09:59:52

标签: javascript node.js bots discord.js

我正在制作一个不和谐的机器人,但遇到一个问题,如果我在聊天中键入$join,我希望该机器人加入我正在使用的语音通道并播放声音。那是可行的,但是当漫游器已经在语音通道中并且我再次键入$join时,它会再次播放声音,并且我希望它在连接到该通道时只播放一次声音。我尝试使用if,else和return函数来解决它,但没有用,谢谢您的帮助。

这是我的代码,就像我描述的一样。

message.delete({
  timeout: 5000
})
const voiceChannel = message.member.voice.channel
if (voiceChannel) {
  const connection = await voiceChannel.join()
  const dispatcher = connection.play("./sounds/xxx.mp3")
  dispatcher.setVolume(0.5)
} else {
  message.reply("you need to be in a voice channel!").then(message => {
    message.delete({
      timeout: 5000
    })
  })
}

1 个答案:

答案 0 :(得分:1)

您需要检查语音连接的频道是否与您要加入的频道相同:如果是,则无需执行任何操作(您已经在频道中),否则,请加入声音等...
您可以使用VoiceConnection.channel

这是我要怎么做:

const voiceChannel = message.member.voice.channel
if (voiceChannel) { 
  // Check if any of the ALREADY EXISTING connections are in that channel, if not connect
  if (!client.voice.connections.some(conn => conn.channel.id == voiceChannel.id)) {
    const connection = await voiceChannel.join()
    const dispatcher = connection.play("./sounds/xxx.mp3")
    dispatcher.setVolume(0.5)
  } // else: you're already in the channel
} else {
  let m = await message.reply("You need to be in a voice channel!")
  m.delete({ timeout: 5000 })
}