完全なコードは次のとおりです。
#client der mit irc-server kontakt aufnimmt
import time
import socket
from sys import argv
script, mitspieler1, mitspieler2 = argv
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
class funktion:
def main(self):
print "Socket(Client)"
host = "irc.iz-smart.net"
port = 6667
PASS = "7987fshd"
NICK = "Testikus"
USER = "Testikus localhost irc.iz-smart.net :Testikus"
self.login(PASS, NICK, USER, host, port)
print "Verbindung aufgebaut zu {0}(IP:{1})".format(
host, socket.gethostbyname(host)
)
self.haupt_schleife()
def haupt_schleife(self):
while True:
antwort = sock.recv(4096)
join = "JOIN #testblablub \r\n"
print antwort
if antwort[0:4] == "PING":
self.pong(antwort, join)
elif antwort.split()[3] == ":quiz.start":
sock.sendall("PRIVMSG #testblablub Es spielen mit: "
+mitspieler1+" und "+mitspieler2+"\r\n"
)
time.sleep(2)
self.fragen(antwort)
def pong(self, antwort, join):
sock.sendall("PONG " + antwort.split()[1] + "\n")
time.sleep(3)
sock.sendall(join)
sock.sendall("PRIVMSG #testblablub hi \r\n")
def login(self, PASS, NICK, USER, host, port):
sock.connect((host, port))
sock.sendall("PASS "+PASS+"\n")
sock.sendall("NICK "+NICK+"\n")
sock.sendall("USER "+USER+"\n")
def fragen(self, antwort):
sock.sendall("PRIVMSG #testblablub Welche Farbe hat der Himmel ? \r\n")
time.sleep(3)
if antwort.split()[3] == ":blau":
sock.sendall("PRIVMSG #testblablub RISCHTISCH \r\n")
ausfuehren = funktion()
ausfuehren.main()
(一部の文字列はドイツ語で書かれていますが、それは重要ではないと思います)
したがって、私の主な問題は、関数を関数(またはPythonのためにメソッド)def fragen(self, antwort)
で実行したいということです。def haupt_schleife(self)
重要なものはすべてこの中にありdef haupt_schleife(self)
ます。クイズコードの残りの部分を の elif ブロックで実行してdef haupt_schleife(self)
、完全に別のものにしたいのです。愚かなことは、「quiz.start」と入力すると、:sock.sendall("PRIVMSG #testblablub Welche Farbe hat der Himmel ? \r\n")
は問題なく実行されますが、if ステートメントは開始されません。チャネルでは他に何もしません (単に "Welche Farbe hat der Himmel ? out" と出力するだけです)。
最終的に誰かがこれを理解してくれることを願っています:/ (コードを実行したい場合は、argv のため、コマンドラインに 2 つの名前を入力する必要があります)