見出し画像

【備忘録】discord.py で定期実行

プログラム関係でタスクスケジューラと呼ばれる、定期実行や時間指定実行できるものがありますが、discord py においても存在します。



正直、ここは解説ではなく、備忘録

やり方云々はこちらのサイトが一番参考になります。


@tasks.loop(seconds=60)
async def loop():

で定期実行、時間指定ができます。

@tasks.loop() の変数をhours, seconds とすると、何時間ごと、何秒ごとのループとなります。
その部分をtime= とすると、時間指定できます。

ただ、時間指定については、タイムゾーン指定しておかないと、サーバー依存になるため、思った時間に指定できないことがあるため、注意


@tasks.loop(seconds=300)
async def loop():
    now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))

    if now.hour == 20 and now.minute == 40:
        lchannel = bot.get_channel(logChannel)
        await lchannel.send('F WORD')

300秒ごと=5分ごとに、ループ
東京時間の現在時間を取得し、20時40分であれば、指定のテキストチャンネルに”F WORD”を投稿します。


loop.start() でbot内でタスクスケジューラとしてのループが開始されます。

@tasks.loop(seconds=60)
async def loop2():

という形で、同じファイル内で@tasks.loop()は並立可能
(処理の重さ関係は知りません)

もちろん、この場合、loop2.start()は宣言しておく必要はあります。



Shiftkeyについて

他のnoteは


noteの内容に共感していただければ、ぜひともサポートを宜しくお願いします。今後の記事投稿の励みになります。