DiscordのWebhookとチャンネル設計

TwitterやGitHubからDiscordに自動で投稿させる方法と、この手の自動投稿を扱う際のより良いチャンネル設計について。

背景

DiscordのYATTEIKIサーバー (yatteiki.fmの収録や管理に使っているサーバー) のWebhookの設定とチャンネルの設計を見直す機会があったので、ついでに設定方法をまとめておこうと思い、この記事を書くことにした。

GitHub

DiscordでWebhookの受信用URLを発行し、GitHubのリポジトリでWebhookの送信用設定を行うと、そのリポジトリでの様々な変更をDiscordに通知できる。

DiscordはGitHubのWebhookへのサポートが手厚く、簡単に設定できるように特別な口を設けているので、設定も簡単だ。具体的には、Discordで発行したWebhookのURLの末尾に /github を足したものをGitHubに設定するだけで良い。どんなイベントを通知するかも、GitHub側で簡単に設定できる。

具体的な設定方法は、DiscordのWebhookのドキュメントを見るのが良い。

Twitter

DiscordでWebhookの受信用URLを発行し、IFTTTでTwitter検索用のアプレット(IFTTTにおける自動化の設定の単位)を設定すると、Twitterでの定期的な検索結果をDiscordに通知できる。

TwitterはWebhookを送信する機能を設けていないので、IFTTTが必要になる。IFTTTは無料アカウントだと3つまでアプレットを設定できる。IFTTTからTwitterの機能を利用する場合は、検索だけの利用でも連携するためのTwitterアカウントが必要になるので注意。

IFTTT側で以下のようにレスポンスボディを設定すると、検索条件に一致したツイートのURLが通知されるようになる。Discordが自動的にURLの内容を展開してくれるので、ツイートの中身はそこから読める。

{
  "content": "{{LinkToTweet}}"
}

DiscordやSlackなどでこういう自動投稿的なものを管理する上で、自分が気を付けたいと思っていることについて触れておく。

自動投稿専用チャンネル

人間の投稿するチャンネルにBotによる自動的な投稿が混ざると、盛り上がっているうちは良いが、そのうち居心地が悪くなったり、廃墟化したりしやすくなる。通知・未読・購読・権限・アーカイブなどはチャンネル単位で設定できるように設計されているので、この手の自動的な投稿にはそれぞれ専用のチャンネルを用意することを基本的にはおすすめしたい。

チャンネルとカテゴリの設計

更に踏み込んだ話をすると、カテゴリについても配慮しておいた方が良い。Discordではカテゴリごとミュートする機能がある。これは例えば「自動投稿の通知は受け取りたくないが未読管理はしたい」といったケースなどで活用できる。こういう事情があるので、できれば自動投稿系のチャンネルや死んだチャンネルをそれぞれカテゴリにまとめるなどしておくと、取り回しやすくなる。

例えばYATTEIKIサーバーでは、簡略化するとこういう感じでチャンネルが配置されている。

  • VOICE
    • 🔊スタジオ
  • TEXT
    • #general
  • BOT
    • #analytics
    • #github
    • #twitter
  • ARCHIVE
    • ...

カテゴリの設計や未読の管理はキーボードや携帯端末での操作性にも関わってくる。この辺りに普段から気を配っておくと、より快適な人生を過ごせるようになるはず。