前提・実現したいこと
Discordでチャットを検出したら自動で返信するbot
なお、連投された場合、連続で返してしまうのを防ぎたい
まだ初心者なのでお手柔らかにお願いします。
ここに質問の内容を詳しく書いてください。
今現在、私がいるdiscordサーバーで脈絡なくちんぽにゃ!とチャットに叫ぶのが流行っています。そこで、ちんぽにゃ!に関係したurlを貼るbotを作ったのはいいのですが、10人が連投すると10回そのurlを貼ってしまい正直うっとおしいです。
ですので、15秒ほ関数を停止してまた自動的にその関数を実行する方法を模索しています。
イメージとしては、10人が投稿した”ちんぽにゃ!”を1つの”ちんぽにゃ!”と処理して、urlを1度だけそのちんぽにゃ!コールの中に貼る感じです。
該当のソースコード
Python
1 2import discord 3import time 4 5 6TOKEN = "MyToken" 7 8client = discord.Client() 9 10 11@client.event 12async def on_ready(): 13 print("ログインしました") 14 15@client.event 16async def pause(): 17 time.sleep(10) 18 19@client.event 20async def restart(): 21 on_message() 22 23 24@client.event 25async def on_message(message): 26 if message.author.bot: 27 return 28 29 if message.content == "ちんぽにゃ": 30 await message.channel.send( 31 "https://www.nicovideo.jp/watch/sm37351730") 32 33 if message.content == "ちんぽにゃ!": 34 await message.channel.send( 35 "https://www.nicovideo.jp/watch/sm37351730") 36 37 if message.content == "おちんぽにゃ": 38 await message.channel.send( 39 "https://www.nicovideo.jp/watch/sm37351730") 40 41 if message.content == "おちんぽにゃ!": 42 await message.channel.send( 43 "https://www.nicovideo.jp/watch/sm37351730") 44 45 if message.content == "落ちます": 46 await message.channel.send( 47 "https://www.nicovideo.jp/watch/sm37351730") 48 49 50client.run(TOKEN) 51
試したこと
Pause関数を作りtime.sleep()を用いて関数の処理を10秒止めるのを試しましたが、再始動後に停止中に投稿された〇〇〇分またurlを貼ってしまい、意味がありませんでした。
exit()はもう使ってしまうと再実行できませんでした
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー