我是python的新手,所以若这个问题很愚蠢,我希望你们能帮助我。 机器人没有每5秒更新一次状态(我花了5分钟这样的时间,但它也不起作用)。它显示服务器的数量,并且不更改为第二状态
from discord.ext import commands, tasks
from itertools import cycle
@tasks.loop( seconds = 12 )
async def changeStatus():
status = cycle( [f' on { len(client.guilds) } servers', '~help'] )
await client.change_presence( activity = discord.Activity( type = discord.ActivityType.playing, name = next(status) ) )
@client.event
async def on_ready():
print( 'bot connected' )
changeStatus.start()
自
每次调用函数时,它都会被重新解释,这意味着
next()
函数总是返回第一个元素。要解决这个问题,您需要一种不同的方法。例如,创建一个全局iteration-variable
并将cycle-list
声明为仅一个列表如果你已经到了列表的末尾,你需要保持跟踪。这是由最后一行代码完成的
status = cycle( [f' on { len(client.guilds) } servers', '~help'] )
此行应该在changeStatus
函数之外,因为无论何时调用它,它都会使[f' on { len(client.guilds) } servers
成为第一项它不会更改状态,因为每个会话的状态更新速率限制为5/60秒。这些利率限制是动态的,所以不要太接近它们
相关问题 更多 >
编程相关推荐