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、最初のコマンドがプログラムをスリープさせ、もう一方のコマンドが機能しないため、2 番目のコマンドがユーザーを収集できifないことです。

どうすれば眠りますが、プログラムは他のことを実行できますか?

(IRCボット)

コード全体: http://pastebin.com/Qr8hAH14

4

1 に答える 1

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たとえば、コードサンプルのどこから来ているのかがわからないため、これは少し大雑把です。したがって、コードの残りの部分によっては、機能させるために少し再編成/再構築する必要がある場合があります。まだ行っていない場合は、すべてをクラスに入れてインスタンス変数を使用する方がおそらく良いでしょう。

于 2012-10-06T00:17:16.517 に答える