Discordで自分用のサーバーを作っておき、そこにプログラム等から通知を送るようにしておけば、スマホにも通知が届いて何かと便利。自動実行をしているプログラムが想定外の動作をした時や、サーバー障害を検出した時など。
通知を送るには、まずDiscordクライアントで通知を送りたいチャンネルの設定を開き、Webhook(ウェブフック)を作成する。URLをコピーしておく。
WindowsのコマンドプロンプトやLinuxのシェルからメッセージを送信するには、curlコマンドを使って以下のように実行する。curlは多くのLinuxディストリビューション及びWindows 10のバージョン 1803以降ならデフォルトでインストールされている。
curl -H "Content-Type: application/json" -X POST -d "{\"username\": \"ユーザー名\", \"content\": \"メッセージ本文\"}" ウェブフックURL
このコマンドをLinuxならシェルスクリプト、Windowsならバッチファイルに書き、他のプログラム・スクリプトやCron・タスクスケジューラから実行することもできる。
ただし、最近のWindowsでデフォルトになっているPowershellの場合、curlコマンドはInvoke-WebRequestコマンドのエイリアスとして設定されているため、同じコマンドだとエラーになる。Invoke-WebRequestで実行することもできるが、コマンドが複雑になる上、日本語が文字化けしたりする。cmd.exeを介して以下のように実行することはできる。
cmd.exe /c 'curl -H "Content-Type: application/json" -X POST -d "{\"username\": \"ユーザー名\", \"content\": \"メッセージ本文\"}" ウェブフックURL
Discordはサーバー・チャンネルごとに通知をカスタマイズすることができるので、スマホにもプッシュ通知を送るチャンネルと、通知は行わず情報を貯めておいて時間のある時に見るチャンネルを分けるといった使い分けをすると便利。