前提・実現したいこと
ここに質問の内容を詳しく書いてください。
discord.pyで2時間ごとに一度、発言をさせたいです。
今は、試しているところなので、10秒ごとにループさせようと思っています。
発生している問題・エラーメッセージ
起動するときになぜか2回、発言してしまいます。
終了するときに停止処理をするとログアウトして、再開ができません。
await client.logout()が原因だと思うのですが、一時停止のコマンドがわからないです。
エラーメッセージ なし
# coding:UTF-8 import discord from discord.ext import tasks TOKEN = "トークン" CHANNEL_ID =チャンネルID # 接続に必要なオブジェクトを生成 client = discord.Client() @client.event async def on_message(message): # Botだった場合は、return if message.author.bot: return if message.content == '!start': # 3秒に一回ループ @tasks.loop(seconds=1) async def loop(): # botが起動するまで待つ await client.wait_until_ready() channel = client.get_channel(CHANNEL_ID) await channel.send('!d bump') # ループ処理実行 loop.start() @client.event async def on_message(message): if message.content == '!bye': await message.channel.send("ばいばーい!") loop.stop() # Botの起動とDiscordサーバーへの接続 client.run("Botのトークン")
試したこと
インデントエラーが出ていましたが、なんとか修正できました。
await client.logout()をloop.stop()にしたら、チャットを送るのを停止し、ボット事態は
オンラインを維持できてましたが、!startと打っても再開ができなかったです。
補足情報(FW/ツールのバージョンなど)
python 3.8.10
回答1件
あなたの回答
tips
プレビュー