pib

[トップ][一覧][最近の更新]


Plain Irc Bot の略。

概要

インストール方法

  1. リポジトリのlib/pib.scmをもらってきて、適当な場所に設置する
  2. リポジトリのsample/*.scmをもらってきて、適当に書き換え、実行する

もしくは

wget http://d.tir.jp/pib-0.3.1.tgz
gauche-package install pib-0.3.1.tgz

但し、これでインストールされるのはpibモジュールだけなので、結局、別途sample/*.scmを参照する必要有り。

リポジトリ

同梱のサンプルの詳細

どのスクリプトも、設定部分を適切に書き換える必要があります。

基本的に、stdout/stderrには何も出力しませんが、エラーが発生した時はstderrに表示するので、バックグラウンド実行時でも、一応stderrのログを取っておいた方がいいでしょう。

logger.scm

ircbot.scm

repl.scm

cliirc

ライセンス

BSD風

使い方詳細

※基本的に、rfc:1459( http://www.haun.org/kent/lib/rfc1459-irc-ja.html )準拠です。

event書式

このモジュールでは、ircサーバとの送受信に使うmessageは、「event書式」(仮名)で扱います。event書式とは、以下のフォーマットのlistです。

'(timestamp mode prefix command . params)

モジュールのuse

(use pib)

ircサーバに接続する

(with-irc
  "irc.server.name" ; ircサーバ名またはip
  6667 ; ircサーバのport番号
  :irc-server-encoding "iso-2022-jp" ; ircサーバのencoding設定(デフォルトutf-8)
  :irc-server-pass "hoge" ; ircサーバのパスワード(デフォルト#f)
  :base-nick "nick" ; nick指定(既に使われていた場合は自動で変更される)
  :username "hoge" ; username指定(デフォルト:base-nick流用)
  :realname "fuge" ; realname指定(デフォルト:username流用)
  :flood-protection-interval 1000000 ; 連続send時の自動ウェイト間隔(デフォルト900000)
  :logging-handler (lambda (event) ...) ; 送受信messageロギング用ハンドラ(デフォルト#f)
  main-thunk)

with-irc内で利用可能な手続き

これらの手続きは、with-irc外では利用できない。

irc-recv-event!

(let1 event (irc-recv-event! . opt-timeout)
  ...)

irc-send-event!

(irc-send-event! '(#f #f #f PRIVMSG "#channel" "こんにちわ"))

irc-send!

(irc-send! '(PRIVMSG "#channel" "こんにちわ"))

get-recv-cv

(let1 cv (get-recv-cv)
  ...)

get-current-nick

(let1 nick (get-current-nick)
  ...)

event->reply-to

(let1 channel (event->reply-to event)
  ...)

send-event-split-last-param

(receive (chopped-event remainder) (send-event-split-last-param event)
  ...)

eventに対するアクセサ

event->timestamp

event->mode

event->prefix

event->command

event->params

その他のユーティリティ手続き

message->event

(let1 event (message->event message . opt-send?)
  ...)

event->message

(let1 message (event->message event . opt-send?)
  ...)

valid-nick?

(unless (valid-nick? nick)
  ...)

make-basic-irc-logger

(with-irc
  ...
  ...
  :logging-handler (make-basic-irc-logger "/path/to/logdir" . opt-fallback-channame)
  main-thunk)

make-thread/report-error

(let1 thread (make-thread/report-error thunk)
  ...)

バッドノウハウ

作った感想

TODO

以下はなんとかするかもしれない項目

以下は基本的に実装されません(実装する必要性に迫られてから実装する為)。

履歴とメモ等

0.3.1

0.3.0

0.2.4

0.2.3

0.2.2

0.2.1

0.2.0

0.1.6

0.1.5

0.1.4

0.1.3

0.1.2

0.1.1

0.1.0

0.0.0で問題となっていた部分は大体解決された。

未実装部分が多いが、どうしても実装する必要性に迫られてから実装する事にする。

0.1.0以降で可能なら解決したい点は以下の通り。

0.0.0

とりあえず動作する状態になった。

しかし、色々と問題点がある為、それらを解決したバージョンを作る必要がある。

これらの問題を解決する為には、構造を以下のように修正すればよい。

その他、修正した方が良さそうなポイントをメモしておく。

不具合報告

動作がおかしい等ありましたら、この辺に書いてください。その内直すかもしれません。



最終更新 : 2012/01/01 03:25:15 JST