0

私は愛情を込めて「shakybot」と名付けた動作中の IRC ボットを持っていました。最初は非常に不安定だったからです。

今、私はそれを再コーディングしています。ただし、実行するたびに問題が発生します。これは、IRC チャネルから検出された出力です。

NOTICE AUTH :*** Please wait while we scan your connection for open proxies...
:Tigh.GeekShed.net NOTICE AUTH :*** Looking up your hostname...
:Tigh.GeekShed.net NOTICE AUTH :*** Found your hostname (cached)
:Tigh.GeekShed.net NOTICE AUTH :*** Checking ident...

そして、メインループに入ります。接続も何もせず、これを印刷するだけです。古いバージョンと同じコードを使用しています。

irc=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
irc.connect((network, port))
a=irc.recv (4096) #Setting up the Buffer
print a
irc.send('NICK ' + nick + '\r\n')
irc.send('USER shakybot shakybot bla :shakybot\r\n')
irc.send('JOIN :' + chan + '\r\n')
irc.send('PRIVMSG ' + chan + ' :Hello.\r\n')

どうすれば接続できますか?

編集: Mibbit とこのプログラムを使用して IRC に接続するデバッグ メッセージを比較した後、次のようになるはずです。

Tigh.GeekShed.net *** Looking up your hostname... 
Tigh.GeekShed.net *** Checking ident... 
Tigh.GeekShed.net *** Found your hostname 
Tigh.GeekShed.net *** Received identd response 
4

3 に答える 3

2

返された場合、リモート サーバーから少なくとも 1 バイトirc.recv(4096)を受信したことを意味します。リモート サーバーは、まだコマンドを送信する準備ができていない可能性があります。ログイン情報を受け取る準備ができたことを示す適切なメッセージがサーバーから届くまで待つ必要があります (申し訳ありませんが、そのメッセージが今何だったか思い出せません)。NICK

于 2012-05-18T03:19:14.627 に答える
1

言うことGregは正しい。メッセージ を確認する必要があるため、このコード ( http://code.activestate.com/recipes/299411-connect-to-an-irc-server-and-store-messages-into-a/ )を調べてください。RFC1459PING

Python IRC ライブラリのいくつかを調べることもできます。
http://pypi.python.org/pypi/lalita/0.1.1
http://pypi.python.org/pypi/irc/1.1

pypi で検索することを忘れないでください ( http://pypi.python.org/pypi?%3Aaction=search&term=irc&submit=search )

于 2012-05-18T05:07:02.777 に答える