【问题标题】:Discord Bot Server MutingDiscord Bot 服务器静音
【发布时间】:2021-01-12 03:08:59
【问题描述】:

我正在尝试编写一个不和谐的机器人,当我执行“.mute @person”时,服务器会将人们静音

我的代码有什么问题?

bot.on('message', msg=>{
   let person = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[1]))
   if(msg.content === ".mute"){
       person.setDeaf
   }
})

它说“消息未定义”

【问题讨论】:

  • 您是否在代码的某些部分定义了消息?因为在函数中没有定义消息。

标签: node.js discord bots


【解决方案1】:

bot.on('message', msg => {...} 等待事件message 然后将该信息作为变量msg 传递给所提供的函数。
在您的函数内部,您引用了message.guild.member,但message 未定义(您将事件信息传递为msg,而不是message)。将您的函数参数更改为消息,如下所示:
bot.on('message', message => {...})

这将解决您遇到的错误,但我不确定该功能是否会真正使用户静音。我想你想要什么is

client.on('message', async message => {
    if (message.content.startsWith(".mute")) {
        let person = message.guild.member(message.mentions.users.first());
        await person.edit({mute: true});
    }
});

请注意,我使用message 作为函数的参数,但我将async 放在它前面,因为我将使用异步函数。 .edit() 采用数据字典,请参阅 linked documentation。等待它是因为它是异步完成的:您调用它,然后在继续之前等待来自服务器的响应(以确保一切都按预期发生)。

测试了自己,就像一个魅力。

【讨论】:

  • 天哪,它真的有效! :D 你能告诉我如何添加多人静音吗?现在我可以做“.mute @Detry”,它会让我静音,但如果我尝试做“.mute @Detry @Rythm”,它只会让我静音。
  • 我不知道,你必须自己弄清楚或者提出一个新问题。但是通过阅读文档 discord.js.org/#/docs ,我可以看到 message.mentions.members 是一个集合。 discord.js.org/#/docs/main/stable/class/…也许你可以弄清楚如何遍历每个提到的成员。
  • @Detry 如果此答案解决了您的问题,请单击复选标记考虑accepting it。这样,这个问题就被标记为已解决。它还给你和回答者一些声誉!
  • @Allister 抱歉,我不能在其他任何地方问你,但我对此有疑问:stackoverflow.com/questions/64079362/… 我想你可能知道如何解决它,因为你建议我使用 async/await
猜你喜欢
  • 1970-01-01
  • 2021-07-28
  • 2018-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
相关资源
最近更新 更多