Discordのチャンネルに定期的に何かのメッセージを書き込む処理をしたかったものの、botではいまいちやり方が分からずあれこれ検索していたところ、Webhookとやらを使うとよいことが分かりました。
チャンネル名の横の歯車マークをクリックし、Webhooksの項目を選択しましょう。
(Webhookの作成権限がない場合は管理者に頼むか諦めましょう)
名前とアイコン、入るチャンネル名を指定し、webhook URLをコピーし、保存します。
後から触る場合はWebhook一覧から「編集」を押してURLを見ることができます。
さて、取得したURLにPOSTでメッセージを投げるとよいらしいです。
(詳しいパラメータは本家ドキュメントを読みましょう)
今回はpythonでRequestsを使ってみました。
discord_webhook
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import sys
url = 'EDIT ME' #ここにWebhook用に取得したURLを入れる
if len(sys.argv) > 1:
payload = {'content': sys.argv[1]}
result = requests.post(url, data=payload)
if result.status_code != requests.codes.no_content:
# 投稿に失敗したときの処理...
あとは実行権限を付与して
% chmod u+x discord_webhook
crontabにどーん(%のエスケープが要ることを知らず数分はまってしまった)
0 * * * * /path/to/discord_webhook "$(date '+\%H')時です"
これで定時処理が色々書けますね。めでたしめでたし。