输入线程的时间限制

Time limit on input thread

我正在使用 Pircbot 创建一个 IRC 机器人,它可以响应某些请求(例如,“!time”提供本地时间)。我正在构建的功能之一是一个赠品系统,从当前在线用户中随机选择一个用户并给予他们奖品。

我想通过强制获胜者在获胜后 30 分钟内输入“!accept”来领取奖品来增强系统。但是我希望机器人仍然可以运行,这意味着我不能将整个线程冻结 30 分钟以等待消息。

我正在考虑的几种方法对我来说有点太老套了。

  1. 我可以将获胜者的姓名存储在变量或 .properties 文件中,并不断寻找“!accept”命令。如果获胜者(变量中的名称)发送了“!accept”并且消息发送时间在 30 分钟内,则确认获胜者。这样做的缺点是,如果机器人在这 30 分钟内重新启动或暂时脱机,可能会导致很多连续性问题,尤其是对于 .properties 文件。

  2. 创建一个可运行的线程,休眠 30 分钟,然后检查 !accept 命令的所有新消息。上面放着 hacky 酱汁,这听起来特别 hacky。

  3. 舞动我的烦恼。

标记您选择获胜者的时间,甚至可能有另一个 Thread 或 Timer 事件在 30 分钟后触发以重置它。

如果输入 "!accept" 并且来自正确的用户并且 "marked" 时间和现在之间的差异小于 30 分钟,快乐的用户