基本上,我试着让我的机器人在人们耳聋的时候马上把他们转移到afk,但是当我测试的时候什么也没有发生。我曾经用过console.log当人耳聋,但仍然什么也没有。
代码:
const Discord = require("discord.js");
const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_VOICE_STATES", "GUILD_MEMBERS", "GUILD_PRESENCES"] });
client.on("voiceStateUpdate", (oldState, newState) =>
{
let memchange = newState.member;
if (memchange.selfDeaf)
{
console.log('User has deafened');
memchange.setChannel(afkchannelid);
}
});
client.once('ready', () => {
console.log('Discord bot is now online')
});
发布于 2022-02-22 10:43:26
我最初认为您的问题可能是一个简单的意图问题,但是,经过进一步的调查,这是一个有关您使用newState.member.selfDeaf
的问题。更正后的代码如下所示,并作了简短解释:
看一看关于Discord.js的官方voiceState
文档
从您所做的工作来看,您正在尝试访问newState.member.selfDeaf
,而newState.member
没有一个selfDeaf
属性(GuildMember文档);因此if语句不会计算为true,也不会运行。
const Discord = require("discord.js");
const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_VOICE_STATES", "GUILD_MEMBERS", "GUILD_PRESENCES"] });
client.on("voiceStateUpdate", (oldState, newState) =>
{
if (newState.selfDeaf)
{
console.log('User has deafened');
newState.member.setChannel(afkchannelid);
}
});
client.once('ready', () => {
console.log('Discord bot is now online')
});
https://stackoverflow.com/questions/71219003
复制相似问题