私はhackthissiteチャレンジのためにpythonでIRCボットを作っています(prog 8)。IRC bot:USERとNICKをしてもMOTDは来ません
def ping():
ircsock.send("PONG :Pong\n")
ircsock.connect((server,6667))
ircsock.send("USER "+botnick+" "+server+" "+botnick+" :"+version+"\n")
ircsock.send("NICK "+botnick+"\n")
while(connect):
ircmsg = ircsock.recv(2048)
ircmsg = ircmsg.strip('\n\r')
print(ircmsg)
if(ircmsg.find("PING :") != -1):
ping()
私はこれに何か問題があることとは思わない: はここに接続コードの抜粋です。 すべての変数が定義されており、値を持っているため、このコードは一部のサーバーで問題なく動作します(たとえば、freenode)。しかし、他のサーバーでは、私は次のような結果を得ています。
:hub.irc.hackthissite.org NOTICE AUTH :*** Looking up your hostname...
:hub.irc.hackthissite.org NOTICE AUTH :*** Found your hostname
PING :3C8E9173
:[email protected] PRIVMSG Tadbot :VERSION
私はこれをどうするべきか分かりません。私はボットのバージョンを ":"と "!"の間のユーザ名に返送しようとしましたが、(期待どおり)何もしませんでした。このような状況が発生したサーバーでは、MOTDを取得することはないので、何かしようとすると「登録していません」というエラーが表示されます。
Googleは、同様の問題を説明している人々の結果をいくつか得ましたが、彼らはUSERとNICKを送信するのを忘れていたので、ここで何をすべきかについて本当に迷っています。
正しい構文は、サーバーを模倣することです。その場合は、mIRCをデバッグモード( '/ debug @ debug')で起動してサーバに接続すると、サーバとクライアント間の通信がはっきりと分かります。 –
私はあなたのためにソースファイルを手配したいと思うIRCボット(PHPのみ)を作成しましたか?それはOOPに基づいており、完全ではありませんが、サーバとクライアントの通信は完全です。 –