Discord.js每隔1分钟发送一条消息

时间:2017-05-17 16:39:46

标签: javascript node.js discord

您好我正在尝试向discord发送自动发送的消息,但我一直收到以下错误:

bot.sendMessage is not a function

我不确定为什么我收到此错误,下面是我的代码;

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

bot.on('ready', function() {
    console.log(bot.user.username);
});

bot.on('message', function() {
    if (message.content === "$loop") { 
      var interval = setInterval (function () {
        bot.sendMessage(message.channel, "123")
      }, 1 * 1000); 
    }
});

2 个答案:

答案 0 :(得分:4)

Lennart是正确的,您无法使用bot.sendMessage因为botClient类,并且没有sendMessage功能。这是冰山一角。您正在寻找的是send(或旧版sendMessage)。

这些功能无法直接在Client类中使用(botTextChannel,它们用于TextChannel类。那么你如何得到它Message?您从Message 得到它。在您的示例代码中,您实际上并未从{{1}获得bot.on('message'...个对象听众,但你应该!

bot.on('...的回调函数应如下所示:

// add message as a parameter to your callback function
bot.on('message', function(message) {
    // Now, you can use the message variable inside
    if (message.content === "$loop") { 
        var interval = setInterval (function () {
            // use the message's channel (TextChannel) to send a new message
            message.channel.send("123")
            .catch(console.error); // add error handling here
        }, 1 * 1000); 
    }
});

您还会注意到我在使用.catch(console.error);后添加了message.channel.send("123"),因为Discord期望他们的Promise - 返回函数来处理错误。

我希望这有帮助!

答案 1 :(得分:1)

您的代码返回错误,因为Discord.Client()没有名为sendMessage()的方法,如docs所示。

如果您想发送信息,请按以下方式进行;

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

bot.on('ready', function() {
    console.log(bot.user.username);
});

bot.on('message', function() {
    if (message.content === "$loop") { 
      var interval = setInterval (function () {
        message.channel.send("123")
      }, 1 * 1000); 
    }
});

我建议您熟悉discord.js的文档,可以找到here