当前位置: 首页 > 知识库问答 >
问题:

正在检索语音频道中存在的成员

尹俊雅
2023-03-14

我正在和一个节点一起工作。js Discord机器人,但在这一点上真的卡住了。我正在尝试检索与运行该命令的人在同一语音通道中的所有成员的名称和id。然而,我很难确定从数据中提取这些数据的最后一步。以下是我所拥有的:

client.on('message', message => {
  if (message.author.bot) {
    return;
  }
  if (message.content === '!tausbot sunday') {
      const channeltoCheck = message.member.voice.id;
      console.log('channeltoCheck:');
      console.log(channeltoCheck);

      const membersofChannel = message.guild.members.cache.find(channeltoCheck => channeltoCheck.id == channeltoCheck);
      console.log(membersofChannel);
  
      const myArray = {};

      membersofChannel.each(member => {
          myArray.push(`${member.user.tag} (ID: ${member.user.id})`)
      });

  message.channel.send(`**MEMBERS**\n${myArray.join("\n") || "No members found"}`);
  } 
});

membersofChannel向我提供数据,这些数据可以很好地传送到控制台。日志,但我需要从中提取用户名和id,并将其发布在消息中。任何帮助都将不胜感激。

共有1个答案

詹联
2023-03-14

您似乎正在使用。查找来查找成员。这是行不通的。. filter将返回一个可以与后面的代码段一起使用的集合。

.filter(member => member.voice.channelID === channelToCheck);
// Filter by their voice channel

假设返回的是一个Array或一个单独的公会成员,则可以将所有数据放入一个新的Array中。然后,您将使用Array.join()连接所有数据。这把它放在一个很好的干净的列表中。

const myArray = {}; // Create an Array to put the new data in
membersofChannel.each(member => { // For each member, do...
  myArray.push(`${member.user.tag} (ID: ${member.user.id})`) // Pull the username and ID
});
message.channel.send(`**MEMBERS**\n${myArray.join("\n") || "No members found"}`)
// Separate entries with a new line
// Send the message containing the information

。连接("\n")将用新行分隔每个成员。假设Joe#0001和Bob#0001在VC中,他们运行命令。它将返回以下内容:

成员
乔#0001(ID:1234567890)
鲍勃#0001(ID:1234567890)

 类似资料:
  • 我有一个叫“土豆音乐”的音乐机器人,它是一个音乐机器人。目前,机器人按照我希望的方式执行命令。但是一旦我停止在本地托管机器人并将其部署在Heroku上,就有一些错误开始出现。 我有一个名为“播放”的命令,每当我执行该命令时,它都应该在语音频道上播放歌曲。命令在命令开头有一个条件,用于检查用户是否已经在语音频道中。但是在我在Heroku上托管了这个机器人之后,一旦我执行命令,它就会一直告诉我我没有连

  • 我对javascript和discord.js很陌生,有人知道如何让机器人加入一个频道,播放一个文件然后离开吗? 以下是我尝试过的: 现在,它将发送消息加入语音通道,而不管我是否在其中,如果我在其中,它就不会加入语音通道并播放文件。任何帮助都很感激。

  • 我正在开发一个播放音乐的discord机器人。我已经设法让机器人离开通道,但服务器中的任何人都可以断开它。 我试图添加一个if语句,该语句要求命令作者的语音通道连接等于该帮会中机器人的语音通道连接。 这返回: 我在留档上找不到任何定义机器人连接到哪个公会的语音频道的东西。

  • 有了一个机器人,我试着用discord在一个音频通道中播放一个音频文件(mp3)。js、ffmpeg和opusscript。 基本上,这就是它的工作原理: 因此,音频播放,但在结束前停止(例如,对于5s音频文件,它在3s后停止)。机器人留在频道中,我可以再次播放,但对于我的所有文件,它在结束前停止。我怎样才能解决这个问题?

  • 问题出在下面的代码上: 此函数的作用是移动一个或多个已引用到specefic voice chanel的成员。 示例:“~send_to_channel@person” 调用该函数时,由于某种原因,“discord.Client().get_channel(*channel ID*)”不会返回语音频道或任何该频道的频道。我已经阅读了stack overflow中的文档和其他一些答案,但我不知道是什

  • 给定频道的“虚荣url”(例如youtube.com/wheelockcollege,指向youtube.com/wheelockmarketing1),是否有办法检索频道详细信息? 我使用的是API的新版本3,以及最新的Python包。