5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PythonでDiscordに時報を書き込む

Last updated at Posted at 2018-05-28

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')時です"

これで定時処理が色々書けますね。めでたしめでたし。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?