#javascript #discord.js
#javascript #discord.js
Вопрос:
В приведенном ниже коде бот должен отвечать, когда его упоминают, и, похоже, он не отвечает на упоминание
let botTagged = message.guild.member(message.mentions.users.first());
if (botTagged) {
if (botTagged.id === '783381382407520276') {
message.channel.send(`My prefix is "${settings.prefix}" || Or use "${settings.prefix}help"`);
}
}
}
Я попытался найти другие ответы на https://discord.js.org / и любые другие сайты, которые включают discord.js кодирование, если можно так выразиться. Я попытался немного изменить код, но никаких результатов и ошибок не было, но, однако, когда он поместил его в раздел, он выдал мне ошибку ReferenceError: message is not defined
, но я исправил эту ошибку. Любая помощь приветствуется, и я попробую все, что получу, как только получу ответ. Спасибо
также могу я добавить, что я создал нового бота без единой строки кода, и я тоже не работал над этим.
Комментарии:
1. Привет, добро пожаловать в StackOverflow! К сожалению, этот вопрос не дает достаточной информации для ответа на вопрос. Похоже, что опубликованный вами код не включает весь соответствующий код и содержит неточное количество фигурных скобок. Какие ошибки вы получаете и в каких строках кода? Попробуйте отладить свой код, проверяя значения каждой из переменных всякий раз, когда вы отправляете сообщение, например,
message
иbotTagged
.2. @Cannicide этот код реализован внутри моего message.js и если вы хотите, чтобы я отправил весь код, я буду более чем рад, если вы поможете.
3. Конечно! Со всем кодом должно быть намного проще найти источник проблемы.
4. его более 2000 символов
5. Вы можете загрузить его куда-нибудь, например, на Github или Codepen , а затем просто опубликовать ссылки, которые они предоставляют вам на ваш вопрос или на эти комментарии.
Ответ №1:
Проблема
Если ваш код предназначен для реагирования при упоминании бота, а не только при упоминании бота одновременно с запуском команды, тогда мне нужно обратить ваше внимание на эти строки кода:
//Trigger Commands
if (message.content.indexOf(prefix) !== 0) return; //<- Notice this
const cmd = client.commands.get(command); //<- and this
if (!cmd) return;
let botTagged = message.guild.member(message.mentions.users.first());
if (botTagged) {
if (botTagged.id == '783381382407520276') {
message.channel.send(`My prefix is "${settings.prefix}" || Or use "${settings.prefix}help"`);
}
}
Ваша проверка префикса / команды размещена прямо над вашей проверкой упоминания! Это означает, что если вы сделаете простое упоминание, например @Bot what is your prefix
, ваш код посмотрит на сообщение и скажет: «Это сообщение не имеет префикса и не соответствует ни одной из команд в списке; поэтому мы не должны позволять коду продвигаться дальше». И из-за этого бот с вашим текущим кодом будет отвечать на ваше сообщение только в том случае, если оно было чем-то более похожим /command @Bot
.
Решение
Простое решение этой проблемы — переместить весь ваш код для ответа на упоминание и переместить его над вашими проверками префикса / команды. Вот так:
//Mention response
let botTagged = message.guild.member(message.mentions.users.first());
if (botTagged) {
if (botTagged.id == '783381382407520276') {
message.channel.send(`My prefix is "${settings.prefix}" || Or use "${settings.prefix}help"`);
}
}
//Trigger Commands
if (message.content.indexOf(prefix) !== 0) return; //<- Notice this
const cmd = client.commands.get(command); //<- and this
if (!cmd) return;
Комментарии:
1. итак, если его переместили в решение, показанное выше, оно должно работать, и теперь упоминание должно работать?
2. Спасибо, Nvm, это сработало, и я ценю помощь, которую вы мне оказали 🙂
3. Да, нет проблем!