![見出し画像](https://assets.st-note.com/production/uploads/images/102076692/rectangle_large_type_2_801913ff8b4b7fcd16e2c259b4a8ecb2.jpeg?width=1200)
【備忘録】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は
いいなと思ったら応援しよう!
![Shiftkey(シフトキー)](https://assets.st-note.com/production/uploads/images/25914421/profile_1a23e03266dd4856bae6fae9c9952fd1.jpg?width=600&crop=1:1,smart)