首页 > 解决方案 > Discord.js 在文本频道中加入/离开语音频道通知

问题描述

我正在尝试创建一个机器人,当有人加入特定的语音通道(例如 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")

    }
})

一些身份证:

当我加入 VC1 时,我收到控制台消息“Left VC1”,当我离开/加入另一个时,我也收到相同的控制台消息。

我从https://www.reddit.com/r/discordapp/comments/6p85uf/discordjs_any_way_to_detect_when_someone_enter_a/获得了机器人示例

标签: botsdiscorddiscord.js

解决方案


这应该工作

    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");
       }
    });

推荐阅读