単純なPythonツイストクライアントを取得しようとしています-サーバーアプリケーションが機能しています。これを使用して、いくつかのIRCボットを制御することを目的としています。すべての(5ish)ボットにコマンドを発行するマスターコンソールのようなものです。
添付されたコードは、いつかサーバーコードになります。今のところ、私はtelnetを使用して、「パーティライン」に接続しているIRCボット(クライアント)をシミュレートしています。
私が立ち往生しているのは、接続されているサーバーアプリケーションからすべてのボットにsendLineを送信するにはどうすればよいですか?raw_inputを取得するためのループを作成するたびに、実行が停止することになります。接続状態関数に対してテストすることを考えましたが、それを見つけることができないようです(接続がtrueの場合、raw_inputのようなロジック)。
from twisted.internet.protocol import Factory
from twisted.protocols.basic import LineReceiver
from twisted.internet import reactor
class bottalk(LineReceiver):
botlist = []
def lineReceived(self, line):
botlistspot = len(self.botlist)
self.botlist.append(line)
print self.botlist[botlistspot] + " checked in."
class botfactory(Factory):
def buildProtocol(self, addr):
return bottalk()
reactor.listenTCP(8123, botfactory())
reactor.run()
次のraw_inputをLineReceiverクラスの内部、外部に配置しようとしました。全体的に..このraw_inputプロンプトが、受信した行のようなイベントの直後ではなく、常に入力を求めるプロンプトを表示するようにします。サーバーボットコンソールが常に入力を受け入れ、すべてのボットにSendLineを送信できるようにします。
sendLine(raw_input("> "))