2009-07-13 9 views
0

どのように私はPythonで作られたIRCクライアントでいくつかの改善を行うことができます。改善は:どのように私はユーザがホスト、ポート、ニック、インデントと実名文字列とメッセージを入力できる何かを置くことができますか?PythonでIRCクライアントを改善する

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 .Thanks。

答えて

2

これで、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 
>>> 
+0

ありがとう非常に! –

2

あなたはすでにあなたがしたいことについて青写真を持っています。あなたはやっている:1は非常にPython的ではありませんしながら、

if(line[0]=="PING"): 

ない理由あなたは、など。また

PORTNICKの入力を受け入れるようにそのスキームを適応させることができませんでした。はい、それは動作しますが、実際にはTrueを使用しない理由はありません。大したことではありませんが、コードを少しだけ読みやすくしています。

1

ない直接的な答えが、あなたは、twistedtwisted.words.protocols.ircircのサポートが含まれPythonで書かれたイベント駆動型ネットワーキングエンジンをIRCの実装を確認する必要があります。

+0

! –

0

もしあなたがPythonの初心者であれば、IRCクライアントは、他の言語でこれまで同様のクライアントを扱っていなかった場合、かなりの仕事をしています。

IRCハンドラを別のスレッドに配置し、別のスレッドでユーザー入力を受け取れるように、スレッディングを参照することをお勧めします(同じスレッドで両方を行う場合は、あなたの質問に答えるには、コンソールのユーザーからの入力を得る最も簡単な方法はin =raw_input()を使用することですが、私が言ったように、それはあなたの質問に答えるために、同じスレッド。

1

、多分cmdモジュールはあなたを助けるでしょう:

IRCに興味がある場合はプロトコル自体、PythonでIRCクライアントを作成するためのソケットを使用しての、このチュートリアルでは、有用であり得る:良いライブラリです

+0

ベースをありがとう! –

関連する問題