使用 Discord.js/Node.js/NeDB 在 X 小时后从用户中删除角色

Use Discord.js/Node.js/NeDB to Remove Role From User After X Number of Hours

我对 Javascript 和 Node 比较陌生,但我已经成功地为我的 discord 服务器创建了一个机器人并实现了一个基本经济,根据 post 提交来授予积分。这些点存储在 NeDB 中。我想允许用户兑换积分,让某人在 X 时间内担任特定角色。

我什至不确定如何开始解决这个问题。我是否使用用户 ID 在我的 NeDB 数据库中记录时间戳,然后以某种方式定期检查该数据库以查看时间戳是否已过?我可以在不阻止机器人其他常规功能和命令响应的情况下执行此操作吗?

此外,我如何使代码健壮,这样如果我的 bot 意外断开连接,用户就不会被临时角色困住?

我很好奇有编程经验的人会如何解决这个问题,以及有哪些我不知道的可用解决方案。

非常感谢您!

在您的 index.js 文件中,您可以创建一个函数来连接到您的数据库,检查每个条目是否经过了足够的时间(将其更早地记录在数据库中),并采取相应的行动。然后,您可以重复调用此函数:

setInterval(functionName, intervalMilliseconds);

上面一行只需要运行一次。该函数将定期调用,这不会阻止您的机器人的其余功能。由于每次机器人重新启动时此命令都是 运行,只要机器人在线,您将始终检查数据库并采取适当的行动(确保您将 NeDB 数据库存储为文件,而不是内存中) .