go-irceventでbotを作成しました。 本当は既にあるperlで書かれたbot使えば良かったのだけれども、 どうぜやるならgolangでbot書きたいなって思って勢いで作りました。
気にした点とか
何も考えずにgo-ircevent使うとif Aというコマンドの時は
みたいな条件分岐がふえて可読性が悪くなるので、hubのコードを参考にして、commands.go
のCallを呼べばよしなにコマンドに対応するfuncを取ってきて実行するような形を採用しました。
基本的にコマンド特有の色が濃い処理は commands/hoge.go
の中に書いて闇を封じ込めて、処理として切り離せる(使いまわせる)部分はmodels/
以下に書いていくような感じです。
設定情報などはconfig/config.yml
を読み込みにいきますが、外に出したくない情報などを扱いたい場合は、config/config_local.yml
を作ることでそちらの情報を優先して読み込むようにしています。config_local.yml
は.gitignoreに入れているので、まちがってコミットされたりすることもなさそうなので便利😇
以下がソースです。
github.com ※今実装されているコマンドは自分都合でつくったものなので、他の場面ではほぼ使えないとおもいます。
golangっぽい書き方とかわかってないので、ご指摘いただけますと幸いです。
はやくテストかかねば
参考にした記事・プロダクト
実装するにあたって以下の記事・プロダクトを参考にさせていただきました。
go-irceventでお手軽IRC bot作成 - Qiita
ありがとうございます🙏