带有斜杠命令的 Discord.js 语音通道

Posted

技术标签:

【中文标题】带有斜杠命令的 Discord.js 语音通道【英文标题】:Discord.js Voice Channel with Slash Commands 【发布时间】:2021-06-08 04:48:26 【问题描述】:

我想用新的 Discord Slash 命令创建一个音乐机器人,但我不知道如何获取用户所在的语音频道。

使用普通的消息命令是message.member.voice.channel

【问题讨论】:

【参考方案1】:

因为interaction.member不包含任何语音信息,所以我定义语音通道如下:

const guild = client.guilds.cache.get(interaction.guild_id)
const member = guild.members.cache.get(interaction.member.user.id);
const voiceChannel = member.voice.channel;

【讨论】:

【参考方案2】:
  const guild = client.guilds.cache.get(interaction.guild_id)
  const member = guild.member(interaction.member.user.id)
  const vchannel = member.voice.channel
  vchannel.join()

这对我有用。

【讨论】:

【参考方案3】:

您可以使用Interaction#member,如果它是在公会中发送的,它将返回发送交互的成员,如果不是在公会中发送,则返回null

【讨论】:

但是 Interaction#member 不包含任何语音信息 - 如果我错了请纠正我 从代码的外观和 JSDoc 注释来看,它返回一个有效的 GuildMember,其中包含任何其他 GuildMember 将具有的所有属性¯_(ツ)_/¯。 如果它不存在,您也可以尝试使用GuildMember#fetch,然后再次检查,但除此之外我很难过。【参考方案4】:

const voice_channel_id = interaction.guild.members.cache.get(interaction.member.user.id).voice.channelId

【讨论】:

以上是关于带有斜杠命令的 Discord.js 语音通道的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js 机器人提到语音通道

自动更新嵌入 (discord.js)

如何将变量设置为用户指定的语音通道 - Discord.js

如何在 discord.js 中断开用户与语音通道的连接?

Discord.js 将 mpeg 音频流流式传输到语音通道

加入机器人 discord.js 的语音频道后如何忽略相同的命令