#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 Если этот ответ решил вашу проблему, подумайте о том, чтобы принять его , установив флажок. Таким образом, этот вопрос помечается как решенный. Это также дает вам и ответчику некоторую репутацию!