の向上のIRCクライアントPython
-
13-09-2019 - |
質問
かきく改善私のポートした。の改善:かることができるもので、ユーザタイプの ホスト、ポート、ニック,インデントREALNAME 文字列をメッセージ?こちらはコードのプログラム:
simplebot.py
import sys import socket import string HOST="irc.freenode.net" PORT=6667 NICK="MauBot" IDENT="maubot" REALNAME="MauritsBot" readbuffer="" s=socket.socket( ) s.connect((HOST, PORT)) s.send("NICK %s\r\n" % NICK) s.send("USER %s %s bla :%s\r\n" % (IDENT, HOST, REALNAME)) while 1: readbuffer=readbuffer+s.recv(1024) temp=string.split(readbuffer, "\n") readbuffer=temp.pop( ) for line in temp: line=string.rstrip(line) line=string.split(line) if(line[0]=="PING"): s.send("PONG %s\r\n" % line[1])
こんにPythonの開発。ここでは、思ったこのコード: http://oreilly.com/pub/h/1968.感謝。
解決
ですから、ユーザーがIRCクライアントが使用する正確な接続情報を管理したいですか?あなたはを使用して接続を開始する前にこれを実行するためには、ユーザからの入力を収集する必要がありますの機能をraw_inputます。
注:末尾の改行文字を削除しますraw_input
HOST = raw_input('Enter Host: ')
PORT = int(raw_input('Enter Port: '))
...あなたは、ユーザーが設定できるようにしたいすべての値に対してます。
例:
HOST = raw_input('Enter host: ')
print HOST
>>>
Enter host: stackoverflow.com
stackoverflow.com
>>>
他のヒント
あなたはすでにあなたはそれがやりたいことのためにそこに青写真を持っています。あなたがやっている:
if(line[0]=="PING"):
あなたがなどPORT
、NICK
、の入力を受け付けるようにそのスキームを適応させることができなかった理由はない。
また、1は非常にPython的ではないながら。はい、それは動作しますが、本当にTrue
を使用しない理由はありません。それは大したことではないのですが、それはコードが少し読みやすくなります。
未直接答えていますが、ツイストに、書かれたイベント駆動型ネットワーキング・エンジンでIRC
の実装を確認する必要がありますPythonでirc
でtwisted.words.protocols.irc
のサポートが含まれている。
いう行為への対応ユーザー入力、その cmd
モジュール談す:
について興味のある方はもちろんのIRCプロトコルは、このチュートリアルを使用ソケットガイIRCクライアントにpythonの使用
、IRCクライアントを使用すると、他の言語で前に同様のクライアントと仕事をしていない場合は特に、かなりの作業です。
私はあなたが別のスレッドで、あなたのIRCハンドラを置くことができるように、スレッド上でルックアップすることをお勧めしますし、別のスレッド上でユーザー入力を受け取る(あなたが同じスレッド上の両方を行う場合は、一方が他方をブロックします、作るだろう悪い経験のため。)
しかし、あなたの質問に答えるために、コンソールでユーザからの入力を取得するための最も簡単な方法は、<のhref =「http://docs.python.org/library/functions.html#raw%5Finput」in =
を使用することですrel =「nofollowをnoreferrer」> raw_input()
のが、私はそれは同じスレッド上のソケットとうまく対話しないだろう、と述べています。