これはMisskey Advent Calendar 2022 14日目の記事です
はじめに
みなさんこんにちは、Bot専門家のかぼです
今回もMisskeyのBotに関係することですが、コードが書けない人でも(多分)使えるような記事です
Webhook
MisskeyにはWebhook機能があるのを知っていますか?
簡単に言うとMisskeyから別のサービスに投稿や通知とかを転送できるような機能です
v12.109.0から使えます
これを使えばDiscordに投稿や通知を転送したり、サーバーを動かすことなくMisskeyのBotを作ることができます
実際にこのWebhook機能を使って、SortBotを作りました
どうやって使うの?
設定を開き、下の方に行くとWebhookの項目があります
Create Webhookを押すと作ることができます
名前とかURLとかシークレットキーを入れて、どのイベントを飛ばすか選んだら作成してMisskeyの準備はOK
使ってみよう
試しにCloudflare Workersを使ってMisskeyに来たメンションをDiscordに飛ばすようなものを作ってみよう
Misskeyから来るデータとDiscordに送るデータの規格が異なり、直接転送できないのでWorkersを通します
WorkersじゃなくてもAWS LambdaとかFaaSと呼ばれるものだったら多分何でもできるはず
Workers以外でやったことないので知りません
Cloudflareのアカウントの作り方とかは省きます
1. Discordの受け取るWebhook URLを作る
転送したいチャンネルの設定の連携サービスからWebhookを作り、URLをコピーしておきます
2. Cloudflare Workersのサービスを作る
CloudflareからWorkersのサービスを作ります
名前とかは適当に
スターターも後でコードをコピペするのでなんでもいいです
サービスができたら右上にあるクイック編集を押してエディタを開きます
開いたら下にあるコードをそのまま上書きコピペしてください
|
|
コピペしたら下にある「保存してデプロイする」ボタンを押して使えるようにします
デプロイできたら左上にあるサービス名をクリックして前の画面に戻ります
タブが並んでいるところから設定を開き、環境変数を設定します
設定する変数はSECRET
とDISCORD
の2つです
SECRET
にはMisskeyから来るWebhookが正しいかどうか、パスワードみたいなものを設定します
これを設定しておくと、WorkersのURLが漏れたとしてもSECRET
が漏れなければいたずらされにくくなります
次にDISCORD
にはさっき作ったDiscordのWebhook URLを入れます
2つとも入力したら必ず暗号化ボタンを押して暗号化します
そうすると、安全なのでしておきましょう
これでWorkersの設定は終わりです
3. MisskeyのWebhookを作る
上に書いた方法でMisskeyのWebhookを作ります
名前はなんでも、URLにはWorkersのURLを入れます
サービスのダッシュボードにそれっぽいのが書いてあるのでそれをコピペ
Secretにはさっき決めたSECRET
と同じ値を入れます
EventsはMentionのみ
作成したらこれで完成です🎉
ね、簡単でしょう?
メンションされるとこんな感じでDiscordに来ます
注意
今のところ(v12.119.2)、作ったWebhookの編集や削除がクライアントからできません
APIはあるので直接叩けば編集できます
そのうち誰かが直してくれるはず
いかがでしたか?
こんな感じで簡単にMisskeyからWorkersを通して他のサービスに転送できるようになります
自分はサーバーレスBotとしてSortBotを作りましたが、他にもいろいろ使い道あるはずなのでみんなも色々遊んでみてね
SortBotのリポジトリはこちらです
参考になるかは知りません
ちなみに、この例で作ったWebhookですがもう消してるのでみんなは使えません
残念