Личное сообщение команды в раздоре - PullRequest
0 голосов
/ 06 июля 2018

Я делаю настройку создания профиля RP для диска-бота, используя javascript. У меня разговор начинается с канала и переходит к личным сообщениям с ботом Первый вопрос задают, а ответ пользователя сохраняется в базе данных. Это работает нормально.

Проблема, по-видимому, возникает, когда я пытаюсь использовать другую команду в личном сообщении с ботом, чтобы перейти к следующему шагу создания профиля RP. Похоже, что команда не используется. Могут ли команды использоваться даже в личных сообщениях с ботом?

Я использовал тот же код, что и первый вопрос, который работал, изменил то, что нужно, но ничего, что должно было нарушить код. Он просто не видит вторую команду, которая хранится в отдельном командном файле. Как бы я это сделал?

module.exports.run = async (bot, message, args) => {
message.author.send(` SECOND QUESTION, **What is the age of your Brawler or Character?**`)
  .then((newmsg) => { //Now newmsg is the message you send to the bot
    newmsg.channel.awaitMessages(response => response.content, {
      max: 1,
      time: 300000,
      errors: ['time'],
    }).then((collected) => {
      newmsg.channel.send(`Your brawler's age is: **${collected.first().content}**

      If you are okay with this age, type !profilegender to continue the profile creation process!

      If you would like to edit your age, please type !profileage`)
        con.query(`UPDATE profile SET age = '${collected.first().content}' WHERE id = ${message.author.id}`);
        console.log("1 record updated!")
    }).catch(() => {
      newmsg.channel.send('Please submit an age for your character. To restart Profile creation, please type "!profilecreate" command in Profile Creation channel on the server.');
    });
  });
}

Заранее спасибо за ваше время!

РЕДАКТИРОВАТЬ: Это часть кода, который бот / клиент прослушивает в сообщении.

bot.on(`message`, async message => {
  if(message.author.bot) return;
  if(message.channel.type === "dm") return;

  con.query(`SELECT * FROM profile WHERE id = '${message.author.id}'`, (err, rows) => {
    if(err) throw err;

    var sql;

    if(rows.length < 1) {
      var sql = (`INSERT INTO profile (id, username) VALUES (${message.author.id}, '${message.author.tag}')`);
    } else {
      var sql = (`UPDATE profile SET username = '${message.author.tag}' WHERE id = ${message.author.id}`);
    };

    //con.query(sql, console.log);
    //if (err) throw err;
    //console.log("1 record inserted!");
  });

1 Ответ

0 голосов
/ 07 июля 2018

Ответ из комментариев

Внутри вашего client.on("message") есть проверка if, которая выходит из функции, если канал является DMChannel

if(message.channel.type === "dm") return;

Чтобы избежать этого, просто удалите эту строку: таким образом, бот выполнит команду независимо от типа канала. Если вы хотите разрешить некоторые команды только в определенных каналах, вы можете сделать это либо в client.on("message"), либо в функции самой команды.

...