将“我已经在频道功能中”添加到机器人。 [不和谐.js]

Posted

技术标签:

【中文标题】将“我已经在频道功能中”添加到机器人。 [不和谐.js]【英文标题】:Adding a 'I am already in the channel function' to a bot. [Discord.js] 【发布时间】:2021-05-23 14:48:26 【问题描述】:

我正在尝试添加一项功能,如果机器人已经在与某人进行语音聊天并且该人试图使其加入,机器人会回复“我已经在语音聊天中”。 这是它适合的部分

client.on('message', async message => 
  // Voice only works in guilds, if the message does not come from a guild,
  // we ignore it
  if (!message.guild) return;

  if (message.content === '>join') 
    // Only try to join the sender's voice channel if they are in one themselves
    if (message.member.voice.channel) 
      const connection = await message.member.voice.channel.join();
     else 
      message.reply('You need to join a voice channel first!');
    
  
);

我问的一个人建议我使用我比较机器人和用户的“voiceState.channelID”。如果相同,则机器人返回消息“我已经在频道中!”我将在哪里以及如何将其放入代码中。我对编程和 javascript 非常陌生。

额外信息:我正在使用 node.js 和一个名为 Discord.js 的库。如果你看不出来,这是一个 Discord 机器人。 我只包含了一段专门用于语音聊天的代码,如果你需要其余的,请告诉我,我会提供!

【问题讨论】:

【参考方案1】:

在 Discord.JS 中,您可以通过 member.voice.channelID 获取频道 ID。所以,在你的代码中你可以添加:

const clientMember = message.guild.members.cache.get(client.user.id);

if(!clientMember.voice.channel) 
    //The bot is in no voice channel, go ahead and join it.

 else if(clientMember.voice.channelID == message.member.voice.channelID) 
    //They're already in the same channel

 else 
    //They're both connected to a voice channel, but they are in different channels.

将其放入 if (message.member.voice.channel) 以确保运行命令的人实际上在 VC 中。

【讨论】:

以上是关于将“我已经在频道功能中”添加到机器人。 [不和谐.js]的主要内容,如果未能解决你的问题,请参考以下文章

如何将自定义表情符号上传到我的不和谐机器人

防止不和谐机器人在用户提示中执行命令

我将如何使用 python 在我的不和谐机器人上添加冷却时间

如何使不和谐机器人随机跳过响应

如果我将他们的 ID 作为字符串,如何在 java 中使用不和谐机器人向用户添加角色?

如何使不和谐机器人将消息发送到不和谐 Node js 的特定频道机器人