0

Python に慣れるために、新しいプロジェクトを開始しようとしています。私は IRC チャンネルを持っていて、ログを維持し、プロンプトが表示されたときに x 行のメッセージを吐き出すボットを持ちたいと思っていますが、このようなものをどこから書き始めればよいかわかりません。

このチュートリアルを見て、ボット自体を使い始めることができると思いますが、ログ機能について次にどこに行けばよいかわかりません。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

1

メッセージの種類ごとに適切なハンドラーを呼び出すディスパッチ関数と、メッセージを適切にフォーマットして送信する送信関数を作成したとします。

ハンドラーは次のようになります。

MAX_LINES = 100

channel_logs = defaultdict(list)

def handle_public_message(user, channel, msg):
    log = logs[channel]
    log.append((user, msg))
    if len(log) > MAX_LINES:
        log.pop(0)
    if msg.partition(' ')[0].lower() == 'dumplog':
        dumplog(log, channel)

def handle_private_message(user, channel, msg):
    if msg.partition(' ')[0].lower() == 'dumplog':
        dumplog(logs[channel], channel, user)

def dumplog(log, channel, user=None):
    for line in log:
        send_msg(line, channel, user)

それだけです。

凝りたい場合は、「最後の 100 個の追加のみを保持するリスト」をラップするクラスを作成し、それをディスクに格納するライトスルー キャッシュにし、代わりに 20 行だけを要求する方法を追加できます。 100など

より標準化された方法でコマンドを処理するなど、ボット固有の機能を追加することもできます。しかし、実際には、そのためのボット フレームワークを取得したほうがよいでしょう。

実際、未加工のソケットとコマンド解析を扱う最初のプロジェクトを開始しないことを強くお勧めします。実際のコードを処理する代わりに、退屈で厄介な問題のデバッグにはるかに多くの時間を費やすことになります。その他のオプションは次のとおりです。

  • などの Python "AI" プラグインを備えた完全なボットsupybot
  • 「ここに独自のコードを追加してください」というコメントが付いたスケルトン ボットで、クイック検索で約 3000 を見つけることができます。
  • twistedフレームワークのプロトコルIRCClientこのようなチュートリアルを見て、すべてがいかに高レベルでシンプルであるかを確認してください。
  • irclib.
于 2013-03-13T05:46:25.690 に答える