Отключение Discord Bot Server

#node.js #discord #bots

#node.js #Discord #боты

Вопрос:

Я пытаюсь закодировать бота discord, чтобы сервер отключал людей, когда я делаю «.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
   }
})
  

Написано «сообщение не определено»

Комментарии:

1. вы определили сообщение в какой-то части своего кода?? потому что в сообщении функции не определено.

Ответ №1:

bot.on('message', msg => {...} ожидает события message , затем передает эту информацию в качестве переменной msg для предоставленной функции.
Внутри вашей функции вы ссылаетесь на message.guild.member , но message не определено (вы передали информацию о своем событии как msg , а не message ). Измените параметр вашей функции на message, чтобы это выглядело так:
bot.on('message', message => {...} )

Это исправило бы ошибку, которую вы получаете, но я не уверен, что эта функция действительно отключит пользователя от сервера. Я думаю, что вы хотите:

 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() использует словарь данных, см. Связанную документацию. Ожидается, потому что это выполняется асинхронно: вы вызываете его, затем ждете ответа от сервера, прежде чем продолжить (чтобы убедиться, что все произошло так, как ожидалось).

Проверил сам, работает как шарм.

Комментарии:

1. Я не знаю, вы должны понять это сами или задать новый вопрос. Но, прочитав документы discord.js.org/#/docs , я могу видеть, что message.mentions.members — это коллекция. discord.js.org/#/docs/main/stable/class /… возможно, вы сможете выяснить, как перебирать каждый упомянутый элемент.

2. @Detry Если этот ответ решил вашу проблему, подумайте о том, чтобы принять его , установив флажок. Таким образом, этот вопрос помечается как решенный. Это также дает вам и ответчику некоторую репутацию!