discord - 在触发 DiscordJS 之前获取上一条消息
问题描述
每次我打电话给机器人时,我都试图在正确地发送消息。
现在我正在使用:
client.on('message', message => {
if (message.content === '$test')) {
message.channel.messages.fetch({ limit: 2 }).then(messages => {
lastMessage = messages.last().content
message.channel.send(lastMessage)
})
}
如果我发送,机器人会正确发送在触发短语之前发送的消息:
你好
$测试
你好
但是,如果我快速发送四条消息:
欢迎!
$测试
你好
$测试
它发送:
你好
你好
什么时候应该用Welcome
then回复hello
。
如何content
在每次触发机器人之前获得发送的消息,而不是通道中的倒数第二条消息?
解决方案
您不应尝试获取上一条消息,而应按顺序存储消息。
var messages = [];
client.on('message', message => {
if (message.content === '$test') {
message.channel.send(messages[messages.length - 1]);
}
messages.push(message.content);
})
您正在从频道中获取最新消息,当发送多条消息时,这可能会产生不可预知的结果。
而是按顺序记录每条消息。这将确保所有消息都将与处理一起添加,以防止不和谐消息的加载速度比不和谐机器人应用程序处理它们的速度更快。
推荐阅读
- java - 在具有空值的情况下按列对二维 Java 字符串数组进行排序
- java - 在屏幕上打印 .txt
- c - 函数返回 1 而不是一个值?
- sql - 如何在sql中获取多个值?
- windows - 为什么 Windows 没有给我一个我要求的大小的窗口?
- python - 如何自动化需要在 linux 命令行中输入两个输入的 python 程序?
- android - 在不配对的情况下为 iOS 附加广告负载
- c++ - 将日语 wstring 转换为 std::string
- google-bigquery - 为查询中的每个结果创建一个 BigQuery VIEW
- flutter - 如何在 Flutter 中将 ChangeNotifier 与抽象类一起使用?