maco's life

最近は技術以外のことを主に記載しています。

go-irceventでbotを作った

go-irceventでbotを作成しました。 本当は既にあるperlで書かれたbot使えば良かったのだけれども、 どうぜやるならgolangbot書きたいなって思って勢いで作りました。

気にした点とか

何も考えずに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

github/hub · GitHub

m0t0k1ch1/gis · GitHub

ありがとうございます🙏