我基本上想每2小时循环一次这个事件,这样机器人就会每2小时更换一次pfp,但是我找不到任何方法。我已经试过trask.loop了,但是我和那个混淆了
pfp_pics = ["1","2","3","4","5","6","7"]
random_pfp = random.choice(pfp_pics)
pfp_path = "pfp/{}.png".format(random_pfp)
fp = open(pfp_path, 'rb')
pfp = fp.read()
@client.event
async def on_ready():
await client.user.edit(avatar=pfp)发布于 2020-05-16 00:32:15
下面是一个使用任务循环的示例:
async def my_task():
cur_avatar = 0
while True:
prev_avatar = cur_avatar
while cur_avatar == prev_avatar:
cur_avatar = random.randint(0, 7) # ensure same avatar isn't picked
pfp = open(f"pfp/{cur_avatar}.png", "rb").read()
await client.user.edit(avatar=pfp)
await asyncio.sleep(7200)
@client.event
async def on_ready():
print("Ready!")
client.loop.create_task(my_task())参考资料:
发布于 2020-05-16 00:12:11
也许您可以设置一个每2小时调用一次python脚本的cron作业?
trask循环是一个错误吗?在谷歌上什么都找不到。
我不太熟悉Discord.py是如何工作的,但是如果有事件循环,您可以轮询以检查两个小时是否已经结束。也就是说,将最后一个事件的时间保存到python脚本中的一个变量,或者保存到一个文件中,以及事件循环的每一次迭代中,检查datetime.now()是否传递了完成该事件的时间,如果已经过了,则执行该操作并更新最后一个事件的时间。
https://stackoverflow.com/questions/61830202
复制相似问题