首页 > 解决方案 > Discord.js 支持频道

问题描述

我想创建一个 if 变量来检查用户是否加入了某个频道,如果他们加入了,那么我将继续执行我的程序。

到目前为止,我尝试过的是不同的事情,例如:

client.on('channel', async channel => {
    if (channel.member.join(channel => channel.id === `672920107457970177`)) {
        working.send("did it work??")
    }
})

但我很确定我的整个脚本都是错误的;几周前我才开始使用 discord.js。

标签: discord.js

解决方案


您可以使用客户的voiceStateUpdate事件。它将返回 2 个 GuildMember 值。旧的和更新的。

Client.on("voiceStateUpdate", (oldMember, newMember) => {
    if (!oldMember.voiceChannel && newMember.voiceChannel) {
        console.log("oldMember channel doesn't exist. newMember channel exist. User joined a voice channel.")
    } else if (!newMember.voiceChannel) {
        console.log("newMember voice channel doesn't exist. User left a voice channel.")
    }
})

您需要进行这些检查,因为voiceStatusUpdate只要语音状态更新(例如,defean、静音、频道移动等)就会触发。

要检查用户是否加入了某个频道,只需检查 ID:

Client.on("voiceStateUpdate", (oldMember, newMember) => {
    if (!oldMember.voiceChannel && newMember.voiceChannel && newMember.voiceChannelID == "CHANNEL ID") {
        console.log(`User joined ${newMember.voiceChannel.name}!`)
    }
})

推荐阅读