2011-01-17 30 views
1

私はIRCボットを持っています。たとえば、誰かがチャンネルに "!op"を入力した場合など、ニックネーム(ボットの管理者)のファイルがあります。どうすればボットにファイルを読み込ませて、 "!op"と入力したユーザーが管理者のリストに入っているかどうか、そして、彼がアクションを続けるかどうかを調べることができます。読み方を混乱させるだけです許可されたユーザーのためのファイル..あなたの助けに感謝します。ありがとう。ファイルからの読み込み(python)

私はこのようなものを使用することができます。..

 def isadmin(nick, 'masters.txt'): 
     for admin in file: 
      if nick == admin.rstrip(): 
       return True 
     return False 

    if data.find('!op') != -1: 
    nick = data.split('!')[ 0 ].replace(':','') 
    if nick == isadmin(nick, open('masters.txt')): 
     sck.send('MODE ' + chan + ' +o ' + nick + '\r\n') 
    else: 
      sck.send('PRIVMSG ' + chan + ' :' + ' youre not my master ' + '\r\n') 

答えて

4

あなたはおそらく全体Python tutorialを介して実行する必要があります。 reading and writing filesについてのセクション全体があります。

+0

私はファイルから読み込む方法を知っていますが、私は始める方法を知らないだけです。例が必要です – SourD

+0

次に、あなたはどの部分が問題を引き起こしているのかを具体的に説明する必要があります。 –

+0

私のコードを見てください。だから、私は何を達成しようとしているのアイデアを持つことができます – SourD

1

私はあなたの名前はの線がセパレートと仮定します。

def isadmin(name, file): 
    for admin in file: 
     if name == admin.rstrip(): 
      return True 
    return False 

しかし、彼らはまた、コンマ可能性がありを区切ります。

def isadmin(name, file): 
    for admins in file: 
     if name in admins.rstrip().split(","): 
      return True 
    return False 

そして、このようにそれを使用します。

isadmin("bob", open("admins.txt")) 
+0

より多くの行を説明することができますisadmin( "bob"、open( "admins.txt")) – SourD

+0

それは、テスト対象者であるopen( "admins.txt")は読み取り権限を持つファイル "admins.txt"を開き、 'isadmin'の' file'変数を 'admins.txt 'を指すファイルオブジェクトに設定してから'isadmin'関数はそこから行を読み込みます。 – orlp

+0

上記のコードをチェックして、それが正しい方法であるかどうか教えてください。ありがとう – SourD

0
admins = set(nick.strip() for nick in open('masters.txt')) 

def isadmin(nick): 
    return nick.strip() in admins 

ファイルの読み取りは、あなたがあまりにも頻繁にファイルを再読み込みしたくないということは十分に高価です。それが短ければ、それを一度読んでそれを記憶に残してください。

関連する問題