Discord.js 在文本频道中加入/离开语音频道通知
Posted
技术标签:
【中文标题】Discord.js 在文本频道中加入/离开语音频道通知【英文标题】:Discord.js join/leave voice channel notification in text channel 【发布时间】:2020-09-07 03:04:56 【问题描述】:我正在尝试创建一个机器人,当有人加入特定语音通道(例如 VC1)时,它将向特定文本通道(例如 vc-text)发送消息。
这是 bot.js 代码:
const Discord = require('discord.js');
const token = require('./auth.json');
const bot = new Discord.Client();
bot.login(token);
bot.once('ready', () =>
console.log(`Bot ready, logged in as $bot.user.tag!`);
)
bot.on('voiceStateUpdate', (oldMember, newMember) =>
let newUserChannel = newMember.voiceChannelID
let oldUserChannel = oldMember.voiceChannelID
if(newUserChannel === 712677767333937284)
// User Joins a voice channel
console.log("Joined VC1")
else if(newUserChannel !== 712677767333937284)
// User leaves a voice channel
console.log("Left VC1")
)
一些ID:
文本通道 ID 为 712677731023716452 - 发送通知到(I 知道我需要添加频道消息编码)。 VC1 ID 是 712677767333937284 - 触发加入当我加入 VC1 时,我会收到控制台消息“Left VC1”,而当我离开/加入另一个时,我也会收到相同的控制台消息。
我从https://www.reddit.com/r/discordapp/comments/6p85uf/discordjs_any_way_to_detect_when_someone_enter_a/获得了机器人示例
【问题讨论】:
查看标记示例,编写此代码的人会检查oldUserChannel === undefined && newUserChannel !== undefined
以检查用户是否已加入频道。这与你所拥有的不同......
是的,很抱歉,使用原始示例和一些更改似乎都不起作用。
我认为您应该使用未定义的方法,因为这样您就可以将它用于多个语音通道而不是单个通道。
你使用的是什么版本的 discord.js?
我需要它用于特定的语音频道,以便在成员加入时排队。我正在运行最新的 12.2.0 版。
【参考方案1】:
这应该可以工作
bot.on('voiceStateUpdate', (oldMember, newMember) =>
let newUserChannel = newMember.channelID;
let oldUserChannel = oldMember.channelID;
if(newUserChannel === "Channel id here") //don't remove ""
// User Joins a voice channel
console.log("Joined vc with id "+newUserChannel);
else
// User leaves a voice channel
console.log("Left vc");
);
【讨论】:
以上是关于Discord.js 在文本频道中加入/离开语音频道通知的主要内容,如果未能解决你的问题,请参考以下文章
Discord Bot 使用 Discord.js 在 X 秒后离开 VC