2
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 机器人)

完整代码: http: //pastebin.com/Qr8hAH14

4

1 回答 1

0

让第一个 if 子句设置 a 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您的代码示例来自哪里。因此,根据您的代码的其余部分,您可能需要重新组织/重组以使其工作。如果您还没有这样做,那么将所有内容都放在一个类中并使用实例变量可能会更好。

于 2012-10-06T00:17:16.517 回答