机器人重启后获取旧消息(Discord 机器人,NodeJS)
Get old messages after bot reboot (Discord bot, NodeJS)
我正在尝试制作 Discord 机器人,但遇到了一些问题。
我想要一种获取频道所有消息的方法,但是在机器人重启后,他不会 "see" 旧消息。
这是一个例子:
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 条随机消息,之后,我启动了机器人并启动了命令。
结果为1,对于调用命令的消息。
使用 .fetchMessages()
方法获取过去发送的消息。
来自 .fetchMessages
上文档的示例:
// Get messages
channel.fetchMessages()
.then(messages => console.log(`Received ${messages.size} messages`))
.catch(console.error);
所以你的例子看起来像这样:
module.exports = class nbMess extends commando.Command{
...
async run(msg, args){
msg.channel.fetchMessages()
.then(messages => {
msg.channel.send(`Number of messages : ${messages.size}`);
});
}
}
您可以将 limit
/ 最大消息数等可选设置传递给 return - 请在此处查看这些设置:ChannelLogsQueryOptions
我和discord.js有同样的问题,发现discord.js-light不依赖缓存,它的事件可以在未缓存的对象上触发。
https://www.npmjs.com/package/discord.js-light
存在一些差异,您可能需要获取一些在 discord.js 中自动填充的数据。
我正在尝试制作 Discord 机器人,但遇到了一些问题。 我想要一种获取频道所有消息的方法,但是在机器人重启后,他不会 "see" 旧消息。 这是一个例子:
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 条随机消息,之后,我启动了机器人并启动了命令。 结果为1,对于调用命令的消息。
使用 .fetchMessages()
方法获取过去发送的消息。
来自 .fetchMessages
上文档的示例:
// Get messages
channel.fetchMessages()
.then(messages => console.log(`Received ${messages.size} messages`))
.catch(console.error);
所以你的例子看起来像这样:
module.exports = class nbMess extends commando.Command{
...
async run(msg, args){
msg.channel.fetchMessages()
.then(messages => {
msg.channel.send(`Number of messages : ${messages.size}`);
});
}
}
您可以将 limit
/ 最大消息数等可选设置传递给 return - 请在此处查看这些设置:ChannelLogsQueryOptions
我和discord.js有同样的问题,发现discord.js-light不依赖缓存,它的事件可以在未缓存的对象上触发。
https://www.npmjs.com/package/discord.js-light
存在一些差异,您可能需要获取一些在 discord.js 中自动填充的数据。