【问题标题】:Discord.JS receiving and sending messages multiple timesDiscord.JS 多次接收和发送消息
【发布时间】:2018-04-12 01:30:56
【问题描述】:

我正在编写一个基本的机器人。出于某种原因,机器人会多次响应单个命令。

代码:

const Discord = require('discord.js');
var bot = new Discord.Client();

const PREFIX = "+";

var fortunes = [
"Yes",
"No",
"Maybe",
" a wild swear has appeared"
];

bot.on("message", message => {

bot.on("message", function (message) {
    if (message.author.equals(bot.user)) return;


    if (!message.content.startsWith(PREFIX)) return;

    var args = message.content.substring(PREFIX.length).split(" ");


    switch (args[0].toLowerCase()) {
        case "ping":
            message.channel.send("Pong!")
            break;
        case "info":
            message.channel.send("no")
            break;
        case "8ball":
            if (args[1]) message.channel.sendMessage(fortunes[Math.floor(Math.random() * fortunes.length)]);
            else message.channel.send("Cant read that")
            break;
        case "embed":
            var embed = new Discord.RichEmbed()
                .addField("Test Title", "test description");
            message.channel.sendEmbed(embed);
            break;
        case "noticeme":
            console.log('Received #' + message.id + ': ' + message.content);
            message.channel.send(message.author.toString() + " Senpai has noticed you")
                .then(message => console.log('Sent #' + message.id + ': ' + message.content))
                .catch(console.error); 
            break;

        

    }
});
});


    bot.login("NOPE")

终端:

代码设置为记录接收和发送的消息。有时,正如您在顶部看到的那样,它只运行一次命令。但大多数时候,该命令会重复(至少)四次。

【问题讨论】:

  • 最好在问题中输出为文本格式而不是屏幕截图
  • 您能尝试再次运行该代码吗? API 今天早些时候有点不稳定
  • 这是一个小故障。只需重新启动程序,您就可以开始了。

标签: javascript node.js discord discord.js


【解决方案1】:

我不确定这是否完全解决了问题,但是您在另一个消息事件中有一个消息事件:

bot.on("message", message => {
    bot.on("message", function (message) {
       //other code here
    });
});

您可能应该删除其中一个,哪个并不重要。

【讨论】:

    【解决方案2】:

    bot.on() 是一个事件监听器。您不能在另一个侦听器中设置侦听器。

    下面的两个监听器应该是这样的,但是它们是一样的。应该删除其中一个

    bot.on("message", (message) => {
        //code A
    });
    
    bot.on("message", (message) => {
        //code B
    });
    

    【讨论】:

      猜你喜欢
      • 2020-06-13
      • 2015-02-17
      • 2016-03-19
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-19
      相关资源
      最近更新 更多