Python に慣れるために、新しいプロジェクトを開始しようとしています。私は IRC チャンネルを持っていて、ログを維持し、プロンプトが表示されたときに x 行のメッセージを吐き出すボットを持ちたいと思っていますが、このようなものをどこから書き始めればよいかわかりません。
このチュートリアルを見て、ボット自体を使い始めることができると思いますが、ログ機能について次にどこに行けばよいかわかりません。誰かが私を正しい方向に向けることができますか?
メッセージの種類ごとに適切なハンドラーを呼び出すディスパッチ関数と、メッセージを適切にフォーマットして送信する送信関数を作成したとします。
ハンドラーは次のようになります。
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など
より標準化された方法でコマンドを処理するなど、ボット固有の機能を追加することもできます。しかし、実際には、そのためのボット フレームワークを取得したほうがよいでしょう。
実際、未加工のソケットとコマンド解析を扱う最初のプロジェクトを開始しないことを強くお勧めします。実際のコードを処理する代わりに、退屈で厄介な問題のデバッグにはるかに多くの時間を費やすことになります。その他のオプションは次のとおりです。