if ":!giveaway" in prevdata and senderusr in securelist and agive == 0:
agive = agive+1
message("Giveaway started by: " + senderusr)
time.sleep(3)
agive = 0
enteredgiveaway = enteredgiveaway.rstrip()
enteredgiveaway = enteredgiveaway.split(" ")
gg = random.choice(enteredgiveaway)
message("The winner of the giveaway is: " + gg)
gg = ""
enteredgiveaway = ""
if "PRIVMSG" in prevdata and agive == 1:
enteredgiveaway += senderusr + " "
第一个if
开始赠品,然后在3秒后将选择一个输入IRC的随机用户,并向IRC发送消息,说明谁赢了。
但是,我的问题是第二个if
无法收集用户,因为第一个命令会休眠该程序而另一个if
无法工作。
我如何睡觉,但让程序可以做其他事情?
(IRC Bot)
答案 0 :(得分:0)
让第一个if子句设置为Timer
,调用一个方法来执行你在睡觉后做的事情。
from threading import Timer
def giveaway():
agive = 0
enteredgiveaway = enteredgiveaway.rstrip()
enteredgiveaway = enteredgiveaway.split(" ")
gg = random.choice(enteredgiveaway)
message("The winner of the giveaway is: " + gg)
gg = ""
enteredgiveaway = ""
并在您引用的代码段中:
if ":!giveaway" in prevdata and senderusr in securelist and agive == 0:
agive = agive+1
message("Giveaway started by: " + senderusr)
t = Timer(3, giveaway)
t.start()
...
这有点粗略,因为我无法分辨在哪里,例如enteredgiveaway
来自您的代码示例。因此,根据代码的其余部分,您可能需要重新组织/重构一下才能使其正常工作。如果你还没有把它们放在一个类中并使用实例变量,那么它也可能更好。