Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在bot重新启动后获取旧消息(Discord bot、NodeJS)_Javascript_Node.js_Discord.js - Fatal编程技术网

Javascript 在bot重新启动后获取旧消息(Discord bot、NodeJS)

Javascript 在bot重新启动后获取旧消息(Discord bot、NodeJS),javascript,node.js,discord.js,Javascript,Node.js,Discord.js,我正试图制造一个不和谐的机器人,我有一些问题。 我想要一种方法来获取某个频道的所有消息,但在bot重新启动后,他无法“看到”旧消息。 以下是一个例子: const commando = require('discord.js-commando'); module.exports = class nbMess extends commando.Command{ constructor(client) { super(client, { name:

我正试图制造一个不和谐的机器人,我有一些问题。 我想要一种方法来获取某个频道的所有消息,但在bot重新启动后,他无法“看到”旧消息。 以下是一个例子:

const commando = require('discord.js-commando');

module.exports = class nbMess extends commando.Command{
    constructor(client) {
        super(client, {
            name: 'nbmsg',
            group: 'admin',
            memberName: 'nbmsg',
            description: 'Return number of messages in a channel'
        });
    }
    async run(msg, args){
        msg.channel.send(`Number of messages : ${msg.channel.messages.size}`);
    }
}
因此,我发送了3条随机消息,然后启动bot并启动命令。
对于调用命令的消息,结果是1。

使用
.fetchMessages()
方法获取过去发送的消息

以下文件中的示例:

因此,您的示例如下所示:

module.exports = class nbMess extends commando.Command{
    ...
    async run(msg, args){
        msg.channel.fetchMessages()
        .then(messages => {
            msg.channel.send(`Number of messages : ${messages.size}`);
        });
    }
}

您可以传递一个可选设置,如限制要返回的最大消息数,请参见此处的设置:

我对discord.js也有同样的问题,并发现discord.js-light不依赖缓存,它的事件可以在未缓存的对象上触发


这里存在一些差异,您可能需要获取一些数据,否则这些数据会自动填充到discord.js中。

请发布相关的代码片段。阅读此帮助主题:。就目前情况而言,我们无法帮助您,因为我们无法洞察到底哪里出了问题。
module.exports = class nbMess extends commando.Command{
    ...
    async run(msg, args){
        msg.channel.fetchMessages()
        .then(messages => {
            msg.channel.send(`Number of messages : ${messages.size}`);
        });
    }
}