首页 > 解决方案 > discord.js 我不断得到机器人所说的而不是用户的消息

问题描述

我不断收到:机器人中的 DM 中的“你的建议是什么”,而不是用户给出的问题的答案

else if(msg.content === 'suggest')
          {
            msg.delete();
            msg.reply('What is your suggestion?');
            msg.channel.awaitMessages(m => m.author.id == msg.author.id,
            {max: 1, time: 30000}).then(collected => {
                    var answer = msg.content;
                    bot.users.get('349463140229971989').send(answer.toLowerCase());
                  })
            //bot.users.get('349463140229971989').send(msg.content);
          }

我也试过这个:

else if(msg.content.startsWith('suggest '))
              {
                var user = msg.mentions.users.first();
                var answer = msg.content;
                bot.users.get('349463140229971989').send(answer.toLowerCase() + " from : " + msg.author);
                msg.delete();
                msg.reply('Your suggestion has been forwarded');
              }

我收到“您的建议已被转发”,它发送给我的是机器人的回复,而不是我的消息

标签: javascriptdiscorddiscord.js

解决方案


错误是您没有获取收集的消息内容,而是这里的命令 msg:

var answer = msg.content;

将其更改为:

var answer = collection.first().content;

但是如果用户不发送消息怎么办?好吧,您可能想发回一条消息,说明时间到了,为此您需要将时间添加为错误之一并添加一条 catch 语句:

else if(msg.content === 'suggest') {
    msg.delete();
    msg.reply('What is your suggestion?');
    
    const filter = m => m.author.id == msg.author.id;
    const options = {max: 1, time: 30000, errors: ["time"]};

    msg.channel.awaitMessages(filter, options)
        .then(collected => {
            const answer = collected.first().content;
            bot.users.get('349463140229971989').send(answer.toLowerCase());
            msg.reply("Suggestion forwarded");
        })
        .catch(err => msg.reply("Suggestion canceled"));
}

推荐阅读