Discord bot I made with node.js is saying "ReferenceError: data is not defined"

Discord bot I made with node.js is saying "ReferenceError: data is not defined"

我有一个 discord 机器人,我正试图断开所有自聋的人的连接。我在 discord.js wiki 上查了一下,看起来 Discord.WidgetMember(client, data) 是解决它的方法。

之前我的代码是这样的

client.on('voiceStateUpdate', (oldMember, newMember) => {
  const newState = new Discord.WidgetMember.selfDeaf(client, data);
  if (newState = true) {
    newState.kick();
  }
});

这没有用,因为它无法识别 .setDeaf。

所以我改成了这个

client.on('voiceStateUpdate', (oldMember, newMember) => {
  const newState = new Discord.WidgetMember(client, data);
  if (newState.selfDeaf = true) {
    newState.kick();
  }
});

给我这个。

const newState = new Discord.WidgetMember(client, data);
                                                  ^
ReferenceError: data is not defined

我认为我不必定义数据,因为它在括号中。我几乎无法使用这段代码,因为我是它的新手。我该怎么做才能修复它?

I didn't think I had to define data since it's in the parenthesis.

您可能会想到函数中的传入参数,而不是将参数传递给函数。在这种情况下,错误告诉您当您尝试执行 new Discord.WidgetMember(client, data); 时未定义 data Discord 文档应该告诉您需要为此参数传递什么。

您的代码不起作用的原因正如@PatrickEvans 在他们的评论中提到的那样:

That is a function call not a function definition. You are trying to pass information to the function so the variables you use have to exist, check the documentation and see what data it is expected to hold and pass that in.

您正在调用 class 构造函数并且您 必须 (除非它没有参数或者它们是可选的)为构造函数提供构造对象所需的数据和。所以变量 data 必须在某处定义。

@PatrickEvans 指出的另一件事是您使用了 assignment operator (=) instead of comparison operator=====)。这里(newState.selfDeaf = true),你想比较属性.selfDeaftrue的值,而不是赋值。

您可以直接在 newMember 对象上访问 .selfDeaf 属性,它是 GuildMemberVoiceState 的实例,取决于 discord.js 您正在使用的版本。根本不需要Discord.WidgetMember(client, data)

参考请看这里:GuildMember.selfDeaf or VoiceState.selfDeaf.

您可能正在寻找这样的东西:

client.on("voiceStateUpdate", (oldMember, newMember) => {
    if (newMember.selfDeaf) {
        newMember.kick();
    }
});