もともとプライベートなネットワーク内でコミュニケーションツールとしてIRCを利用していたが、外部とのやりとりでslackも利用することになった。
その際にslackとIRCを連携できたら便利だなと思ってIRCボットで連携してみた。
この文書では連携内容をメモしておく。
同じようなことをされている方がいた!
Scala - SlackとIRCを相互リレーする話 - Qiita
連携例
IRCボットでこんな感じに連携してみた。
最後2行がIRCでの発言
最後2行以外がslackでの発言
システム構成
IRCボットはrubyで作成
特徴
IRCへの連携
- ボットの名前をなるべくslack上の発言者の名前にあわせて変更してslack上の発言を行う
- ボットの名前として_(アンダーバー)をslackの名前の最初につける
- IRC上で名前が被った場合はプレフィックスに_(アンダーバー)が増えて行く
- マルチスレッドで複数のボットを動かして名前をキャッシュすることができる
- 必要な場合は一番古い発言を行ったボットの名前が変更される
メリット
- ボット名固定でslack上の発言者の名前をコメント上に表示する場合はキーワードにひっかかる場合があるがそういうことがない
デメリット
- slack上の名前をIRCのnicknameの仕様に無理やりあわせるため発言者がわかりにくくなる場合がありうる
- ボットの数によっては頻繁に名前が変わってIRC上に通知されるためうざい場合がある
- マルチスレッドなボット間で連携がいるためコードがやや複雑になる
slackへの連携
- IRCの発言者の名前の前後に:をつけるのでslack上でカスタムアイコン登録すると発言者がわかりやすい
- IRCの発言者の名前のサフィックスの_は削除する
- LimeChatで名前が被った場合にサフィックスに_をつける仕様を意識
SQS越しの連携
- メリット:外には出ていけるが外からアクセスできないようなプライベートなネットワークにあるIRCとも連携可能
- デメリット:AmazonWebService環境が必要になる
ソースコードと使いかた
Github上に配置
https://github.com/mechamogera/slack_irc_bot