作ろうとしているもの
discord.pyで、Discordのボットを作ろうとしています。
作りたいボットの内容は、簡単に説明すると、
1人のユーザーが「!start」と発言すると、その5分後に同じチャンネル内で「出現しました」と、ボットが発言してくれるような機能です。これを複数のDiscordのサーバーで動くようにしたいと思っています。
発生している問題・エラーメッセージ
ユーザーの発言に対して5分後にボットが応答するところまでは実装できたのですが、このボットを異なる二つのサーバーに招待して、それぞれのサーバーで時間を空けずに「!start」と打つと次のようなエラーが出ます
RuntimeError: Task is already launched and is not completed.
該当のソースコード
Python
1import discord 2import datetime 3from discord.ext import tasks 4 5#トークンの設定 6TOKEN = 'testtest' 7 8#おまじない 9client = discord.Client() 10 11@client.event 12async def on_ready(): 13 print('ログインしました') 14 15@client.event 16async def on_message(message): 17 #Botだった場合は、return 18 if message.author.bot: 19 return 20 21 if message.content == '!start': 22 #発言したチャンネルのIDを取得 23 channel_id = message.channel.id 24 #現在時刻取得 25 now = datetime.datetime.now() 26 #5分後の時間を取得 27 nextTime = now + datetime.timedelta(minutes=5) 28 29 #loopスタート 30 time_check.start(channel_id,nextTime) 31 32#30秒ごとにループする処理 33@tasks.loop(seconds=30) 34async def time_check(channel_id,nextTime): 35 now = datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M') 36 nextTime = nextTime.strftime('%Y年%m月%d日 %H:%M') 37 38 if now == nextTime: 39 channel = client.get_channel(channel_id) 40 await channel.send("出現しました") 41 time_check.stop() 42 43client.run(TOKEN)
補足情報(FW/ツールのバージョンなど)
Python 3.7.4を使用してます。
上記のようなエラーが出ずに、複数サーバーでちゃんと動くようにするにはどうしたらいいのでしょうか?
プログラミング歴は浅いですが、よろしくお願いします
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/20 03:28
2021/03/21 00:25
2021/03/21 10:07