【问题标题】:Ban user if they mention over 5 people如果用户提及超过 5 人,则禁止用户
【发布时间】:2021-09-15 00:52:46
【问题描述】:

Heyo Axmyo 在这里,

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

但是我尝试使用的代码没有做任何事情..

任何帮助将不胜感激!

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

【问题讨论】:

  • 您应该查找代码的错误日志,无论它在何处运行。我很确定你有一个 Uncaught TypeError: message.author.ban is not a function 在那里等着你,这会推动你走向正确的方向

标签: node.js discord.js


【解决方案1】:

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

message.author returns a User.

but .ban() is available only on GuildMember.

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

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

请注意 .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...
  } 
})

编辑

message 对象上有一个成员属性,谢谢Itamar S

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

  await message.member.ban();
  // Do other things... 
})

【讨论】:

  • 谢谢,完全错过了。我已经编辑了答案。
猜你喜欢
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 2018-08-17
  • 1970-01-01
  • 2019-04-16
  • 2021-12-22
  • 2021-04-28
相关资源
最近更新 更多