等待一段时间,然后与bot进行DM,同时与多个用户进行DM



我有一个我正在练习的不和谐机器人,在一定时间后用dm提醒用户。我的问题是我使用time.sleep()来处理延迟。这将阻止其他用户设置提醒,因为它正在等待前一个time.sleep()结束。我想让多个提醒请求同时发生,而不是等到每个请求结束后才开始下一个请求。下面是我的代码。我的不和令牌托管在一个单独的.env文件中。

# bot 2
import os
import discord
import time
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('DISCORD_TOKEN2')
client = discord.Client()

@client.event
async def on_ready():
print(
f'{client.user} has connected to Discord!')

@client.event
async def on_message(message):
if message.author == client.user:
return
remind_me = 'You will be reminded '
if 'remindme!' in message.content.lower():
if message.content[-1] == 'h' or 
message.content[-1] == 's' or
message.content[-1] == 'm':
response = remind_me + ''' + message.content[10:-3] + '' in' + message.content[-3::]
await message.channel.send(response)
else:
await message.channel.send('I don't understand.')
if message.content[-1] == 'h':
time.sleep(3600 * int(message.content[-2]))
await message.author.send('Reminder! n' + message.content[10:-3])
if message.content[-1] == 's':
time.sleep(int(message.content[-2]))
await message.author.send('Reminder! n' + message.content[10:-3])
if message.content[-1] == 'm':
time.sleep(int(message.content[-2])*60)
await message.author.send('Reminder! n' + message.content[10:-3])

client.run(TOKEN)

我知道我可以清理if语句,所以不用担心。

asyncio.sleep代替time.sleep

import asyncio
[...]
if message.content[-1] == 'h':
asyncio.sleep(3600 * int(message.content[-2]))
await message.author.send('Reminder! n' + message.content[10:-3])
[...]

相关内容

  • 没有找到相关文章

最新更新