2015-09-10 111 views
3

我正在創建一個使用Pircbot的IRC機器人,它可以響應某些請求(例如「!time」提供本地時間)。我正在構建的功能之一是一個贈送系統,它從當前在線用戶中隨機選擇一個用戶並給予獎勵。輸入線程的時間限制

我想通過強制贏家在獲勝後的30分鐘內輸入「!accept」來提升系統,以獲得獎品。不過,我希望機器人仍能正常工作,這意味着我無法將整個線程凍結30分鐘等待消息。

我正在考慮這樣做的幾種方法,對我來說感覺有點過於哈哈。

  1. 我可以將獲勝者的名字存儲在一個變量或.properties文件中,並且不斷地在尋找「!accept」命令。如果獲勝者發送了「!accept」(變量中的名稱),並且發送消息的時間在30分鐘以內,請確認獲勝者。這樣做的缺點是,如果機器人在這30分鐘內重新啓動或暫時脫機,它可能會導致很多連續性問題,特別是使用.properties文件時。

  2. 創建一個可運行線程,休眠30分鐘,然後檢查!accept命令的所有新消息。這聽起來有點怪異,頂上有哈克醬。

  3. 將我的問題帶走。

+0

馬克您選擇的獲獎者的時候,甚至還有一個'線程「或」定時器「事件在30分鐘後觸發以重置它。如果輸入是「!accept」並且來自正確的用戶並且「已標記」時間與現在之間的差異小於30分鐘,則愉快用戶 – MadProgrammer

+0

您可以在30分鐘後回來以檢查用戶是否寫下''' !accept''',或者你有一個計時器線程來及時檢查這種情況,並在30分鐘後停止。這兩個選項都是有效的,取決於你想多久檢測一個潛在贏家寫了'''accept'''' –

+0

@MadProgrammer不是一個壞主意......你會建議我在30分鐘內存儲贏家的名字? .properties文件或討厭的全局變量? –

回答

1

標記你選擇贏家的時間,甚至可能有另一個線程或計時器事件,在30分鐘後觸發重置它。

如果輸入"!accept",是從正確的用戶和「標記」的時間之間的區別,現在是小於30分鐘,幸福的用戶