禁止用户,如果他们提到超过 5 人

Axm*_*myo 2 node.js discord.js

Heyo Axmyo 在这里,

如果他们提到超过 5 个人,我想自动禁止用户,而不是机器人

但是我尝试使用的代码没有任何作用..

任何帮助,将不胜感激!

client.on("message", message => {
  if(message.mentions.members.size > 5) {
    message.author.ban();
  } 
})
Run Code Online (Sandbox Code Playgroud)

Eck*_*sDy 6

你的方向是正确的,你的 if 语句是正确的。

message.author返回一个User.

.ban()仅在GuildMember.

因此,您需要将 转换UserGuildMember。幸运的是,消息对象包含Guild它被发送的对象,因此您可以执行以下操作:

client.on("message", message => {
  if(message.mentions.members.size > 5) {
    const user = message.author;
    const guildMember = message.guild.member(user);
    guildMember.ban();
  } 
})
Run Code Online (Sandbox Code Playgroud)

请注意,.ban()返回一个承诺,因此如果您想在禁令后做其他事情,那么执行以下操作可能是个好主意:

client.on("message", async message => {
  if(message.mentions.members.size > 5) {
    const user = message.author;
    const guildMember = message.guild.member(user);
    await guildMember.ban();

    // Do other things...
  } 
})
Run Code Online (Sandbox Code Playgroud)

编辑

消息对象上有一个成员属性,感谢Itamar S

client.on("message", async message => {
  if(message.mentions.members.size <= 5) return;

  await message.member.ban();
  // Do other things... 
})
Run Code Online (Sandbox Code Playgroud)

  • 或者你可以只使用`message.member` ... (4认同)
  • 谢谢,完全错过了。我已经编辑了答案。 (2认同)