9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

FUJITSUAdvent Calendar 2020

Day 12

今まで作ったmattermost botを振り返る(2020年版)

Last updated at Posted at 2020-12-11

この記事はFujitsu Advent Calendar 2020 12日目の記事です。

現在自分が所属している部署では、作業時間のごにょ%を自己研鑽に充てることが可能です。
そんな前提があり、所属のMattermostに通知するbotを作成していました。

昔はHubotやJenkinsで対話(・対話モドキ)botで遊んだりもしましたが
今年はちょっとしたbotの量産をしたので、それを振り返ってみたいと思います。

技術的な要素

Pythonスクリプトとして実装しcronにより定期実行しました。

  • Python
  • Mattermost incoming webhook
  • Mattermost API
  • Slack API
  • webスクレイピング

作ったbotたち

GitHub release checker

リリースを追いたいOSSについて、GitHubリリースページのatomを定期的に参照して
追加があれば通知します。

各OSSのSNSや公式ページをずっと監視するわけにもいかず
全部のスクレイピング実装もかったるい GitHubのリリースページに目をつけて実装しました。
数々のリリース検知に活躍したので、今回紹介する中では一番働いた子だと思います。

GitHub APIの方がかっこいい(?)実装ですが、対象OSSの増加などから
あえてトークンの制限がないatomによる実装としています。

GitHub add repository

GitHubの特定組織のrepoページのatomを定期的に参照して
repository追加があれば通知します。

repo追加を監視すると、論文や新しいOSSの公開を追えたので興味深かったです。
こちらもトークン制限回避のためatomによる実装です。

GitHub status checker

https://www.githubstatus.com のatomを定期的に参照して
追加があれば通知します。

GitHubを開いていて50xエラーに延々と遭遇したときに作りました。
githubstatusのatomはEntryの更新時にタイムスタンプupdatedも一緒に更新されていたため
進捗状況も通知しています。

Mattermostチャンネル追加通知

1日1回公開チャンネルの一覧をチェックし、追加があれば通知します。

過去に似たbot(メンバが追加されたら、ウェルカムメッセージとチャンネル一覧をPOST)を作っていましたが
別所属のMattermostでチャンネル通知のみのbotを見かけ、そちらのほうが便利そうなので新たに作り直しました。
所属のMattermostでは認証基盤を別にしているため、Mattermostの認証APIが使えず、若干苦労しました。

PREMIUM FRIDAY!!!!!!!

プレミアムフライデーを通知します。

テレワークになり、なかなかプレミアム撤退がやりにくいのが痛しかゆし。

mat2mat

MattermostのチャンネルAのPOSTをチャンネルBに転記し
元POSTには転記済みのマーキングとして絵文字リアクションをします。

次のslack2mattermostのための習作でした。現在はslack2mattermostが稼働しているため停止しています。

slack2mattermost

SlackのPOSTをMattermostに転記します。
作った経緯などを別記事にまとめましたので、よろしければそちらをご覧いただければと思います。

Slack status checker

https://status.slack.com/ のatomを定期的に参照して
追加があれば通知します。

GitHub版と同じノリで作りましたが、slack statusのatom
updatedがatomページにアクセスしたタイムスタンプが設定されているのかEntryの更新を検出できませんでした。
そのためSlack版では進捗の通知はできていません。

CUDA, cuDNN release checker

CUDA, cuDNNの最新ドキュメントをスクレイピングし
バージョンが更新されていたら通知します。

CUDA,cuDNNはGitHub管理ではないため、リリース検知として作りました。
スクレイピングはchrome canaryを使いたかったのですが、プロキシの壁に阻まれphantomJSを利用しています。

今後作りたいbot

久々に対話・対話モドキがやりたくなっているので、今後もbotを作っていきたいと考えています。
Hubotで遊んだのは5~6年前でしょうか、最近の流行りも追いかけたいですね。

みんなで更新、用語辞書

ちょっとした単語から社内用語まで、なかなか人に聞きづらかったりしますが
Mattermostに"♯what_is" (~とは)チャンネルを作り、わからない単語とその意味をPOSTしてみたところ
ありがたいことにいろんな方にも参加いただけるようになってきました。

ただ、gitlab wikiにも用語集のページは作ってありますが、それを更新するまでは至っていないため
botでつなげられればいいなと思っています。

対話モドキとして、ハッシュタグによるコマンドbotとして検討中です。

Mattermostログ + search

Mattermostは非常に便利ですが、検索機能には少し不満があります。
別サーバにログを保存し、ログ+検索用botが作れないかなーとぼんやり検討しています。

さいごに

最終的にはこういうbotになりたいです。

brain_nou_suisou_denkyoku.png

以上、ありがとうございました。

追記

うっかり記事公開とリンク修正を忘れていたので更新しました。(12/12 22:00)

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?