名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

Discord で bot からメッセージ送信する方法を考える

チャットボットというより、定期的にそういうのが投稿されていればOKなシーンがある(リマインドなど)。

なので、その方法が知りたいと思って調べた。

多分2パターン

調べた感じ2パターンな気がする。

Webhook でやる

こっちのほうが気楽な気がする。

curl -H 'Content-Type:application/json' "$DISCORD_WEBHOOK_URL" -d '{"content": "もぐもぐ\rおかゆ〜"}'

下記の記事を参考にした。

qiita.com

めっちゃ簡単にPOSTできた。特定のチャンネルに対する特定の発言を投げつけるだけだったら十分実用的な気がする。

今のところはこっちで十分そう。

discord.py とか bot ライブラリからやる

投稿チャンネル数とかが横断的かつ、多数になってきたときはこっちのほうが良さそう。

qiita.com

この記事のログイン時のメッセージで使ってるのを少し改変して、こういう形にしたけど、まあ投げれてはいる。ログイン時に関しては、登録してそうなチャンネルIDをDBなりキャッシュなりからガサッと持ってきて、それをぐるぐる投げつければいけるのかなと思ってる。

@client.event                                             
async def on_ready():
    print('ログインしました')
    login_channel = os.getenv('LOGIN_CHANNEL')
    if login_channel:  
        login_channel_id = int(login_channel)
        channel = client.get_channel(login_channel_id)
        await channel.send('起動したやで')

これをあとはなんか適切なイベントに割り振るとか、適当なメソッド呼び出しを外部からするとかすれば良さそう。

あんまりちゃんと調べられていないので、それっぽいやり方があれば、もう少し深く調べる。

まとめ

今のところは管理は煩雑かなと思いつつ、WebHookぐるっと回すかなという感じ。Discord Bot の使い方とか、できそうな機能を調べたらもう少し真面目にBotづくりして対応できればいいかなーと思ってるけど、現時点ではどうしていけばいいのかわかってないです。Documentもう少し漁るか…。