Кто-нибудь может помочь с этим кодом, относящимся discord.js это, кажется, не работает?

#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. Да, нет проблем!