我当前正在尝试创建一个Discord机器人,该机器人在具有指定角色的用户发送命令%sticky This is a test
我希望它始终是频道中的第一条消息,并且每次其他用户在该频道中键入内容时,机器人都会删除其最后一条消息并再次发布。我还没有网上上的运气,甚至没有找到一个已经具备此功能的机器人,甚至从哪里开始。到目前为止,这就是我所拥有的
var lastStickyMessage;
client.on('message', message => {
if (lastStickyMessage != null) {
message.channel.fetchMessage(lastStickyMessage)
.then(retrievedMessage => retrievedMessage.delete());
}
message.reply("This is a Sticky Message").then(sent => {
let lastStickyMessage = sent.id;
}
});
答案 0 :(得分:1)
变量管理存在多个错误:一方面,您创建了一个具有相同名称的 new 租约。由于let是有作用域的变量,因此lastStickyMessage
在发送的回调中将具有一个不同于其外部的值,因为这是两个不同的变量(有关此here的更多信息)。>
除此之外,您还应该将上次发送的ID保存在文件中或某个位置,因为一旦重新启动bot,变量就会被重置(内置fs
模块可以为您提供帮助,您可以找到说明文件here)。
最后一件事:如果初始化没有值的变量,则不是null
,而是undefined
。如果仅使用==
进行检查,则仍将得出true
(表示null == undefined
),但如果使用===
进行比较,则会得出false(null !== undefined
)。在您的情况下,这并不是真正的问题,但是对于其他情况,可能会很了解。