Zapier使ってDiscordに定期の投票を作る
はじめに
私はゲーム仲間達と予定が合う日に遊んでいるのですが、予定調整するのが面倒なので、ZapierとQuick Pollを組み合わせて、毎晩アンケートを自動投稿することで、集まれるかを確認していました。
ただし、2025年3月29日をもってQuick Pollがサービス終了したため、代替となる手段を実施しました。
同じ問題を抱えている人や新たに定期のアンケートを取りたい方向けに記録を残しておきます。
事前準備
ZapierとDiscordのアカウントは事前に作っておいてください。
また、投票を作りたいDiscordのサーバーにはZapierアプリを追加しておく必要があります。
Zapier使ってDiscordに定期の投票を作る
事前準備ができれば、やることはすごく簡単です。
下図の構成になるように作業していきます。
まずはZapsを作る
画面左上の「Create」ボタンからZapsを作成してください。
Schedule By Zapierを配置してタイマートリガーをセットする
Triggerには「Schedule By Zapier」を配置します。
18時の実行例が下図。
Configureの「Time of Day」には世界標準時(UTC)でセットするみたいなので、「実行したい時間-9時間」した値をセットすればOKです。
Discord API Requestを配置して投票を作成する
次に「Discord」をActionに配置します。
Setupは下図のようにセットします。Accountは投票を作成したいサーバーをセットしましょう。
Configureを設定していきます。
項目 | 設定値 |
---|---|
Stop on error | No ※最終ステップなのでなんでもいい |
HTTP Method | Post |
URL | "https://discord.com/api/v{version}/channels/{channel_id}/messages" ※versionとchannel_idについては後述 |
Query string parameters | ※設定なし |
Additional request headers | "Content-Type" : "application/json" |
{
"content":"【{{291729969__date_year}}{{291729969__date_month}}{{291729969__date_day}}】とんかつアンケート",
"tts":false,
"embeds": [{
"title": "PM8時45分までに投票してね!"
}],
"poll":{
"question": { "text": "今日は何して遊ぶ?" },
"answers": [{
"answer_id": 1,
"poll_media": { "text":"原神"}
},{
"answer_id": 2,
"poll_media": { "text":"鳴潮"}
},{
"answer_id": 3,
"poll_media": { "text":"モンハン Wilds"}
},{
"answer_id": 99,
"poll_media": { "text":"とりあえず行く"}
},{
"answer_id": 100,
"poll_media": { "text":"行けそうにない"}
}],
"duration":2,
"allow_multiselect": true
}
}
これらがセットすれば、下図のような投票が毎日作成される!
【補足】Discord APIでつかうversionとchannel_idの取得方法
version
Discord.devのAPI VersioningページでAvailableなバージョンを確認してください。
channel_id
まずDiscordの開発者モードがONになっている必要があります。
ユーザー設定の詳細設定から開発者モードをONにしてください。
次に投票を作成したいチャンネルを右クリックして、メニューの一番下「チャンネルIDをコピー」を押せばOKです。
おわりに
今回はZapierとDiscord APIを使って投票の自動投稿を実現しました。
Discord API の中でも投票機能のAPIは「Poll」と表現されています。投票締め切り日を表す「expiry」には上の例でもそれっぽい値を入れていますが、今も意図した時間に締め切られません。
うまく調整が終わったら、記事を更新しようと思います。
また、締め切り日時の加工は少し力業になっていて、上の例だと1~9月の間しか動きません。
月が二桁の場合も動かしたい場合は、切り替わりの時期に調整(年2回)をするか、ZapierのJavascript Actionを使って加工するかで実現できます。
後者は有料版じゃないと実装できないので、有料版使っている方は試してみてください。
私は無料版を使っているので、年二回の調整で運用していこうと思います。
Discussion