Python 3.x 如何将bot所在的服务器数设置为状态(discord.py rewrite)?
我尝试使用这段代码:Python 3.x 如何将bot所在的服务器数设置为状态(discord.py rewrite)?,python-3.x,discord.py,Python 3.x,Discord.py,我尝试使用这段代码: status = cycle(['.apuva', f'{str(len(client.guilds))} palvelimella!'] @client.event async def on_ready(): change_status.start() print('Botti on käynnissä.') async def change_status(): await client.change_presence(activity=dis
status = cycle(['.apuva', f'{str(len(client.guilds))} palvelimella!']
@client.event
async def on_ready():
change_status.start()
print('Botti on käynnissä.')
async def change_status():
await client.change_presence(activity=discord.Game(next(status)))
但是,这显示状态为“0服务器”,即使我的bot位于3台服务器上。如何在discord.py的重写版本中修复此问题?我就是这样写的,因此bot的状态将更改为“Playing x servers!”:
我就是这样写的,所以机器人的状态将变为“玩x服务器!”:
它之所以说0服务器,是因为f字符串在声明它们的同一行上求值。由于bot尚未运行,
len(client.guilds)
在字符串中的计算结果为0,因此这与分配status=cycle(['.apuva',0 palvelimella!'])
相同
您可以在字符串中保留占位符,而不是使用f字符串,然后在循环中格式化占位符
status=itertools.cycle(['In{n}服务器',…])
...
@tasks.loop(分钟=5)
异步def更改_状态():
名称=下一个(状态)
name=name.format(n=len(client.guilds))
#请注意,如果占位符“{n}”在字符串中不存在,
#不会发生错误,字符串保持不变
等待客户。更改您的状态(…)
之所以说0服务器,是因为f字符串是在您声明它们的同一行上计算的。由于bot尚未运行,len(client.guilds)
在字符串中的计算结果为0,因此这与分配status=cycle(['.apuva',0 palvelimella!'])
相同
您可以在字符串中保留占位符,而不是使用f字符串,然后在循环中格式化占位符
status=itertools.cycle(['In{n}服务器',…])
...
@tasks.loop(分钟=5)
异步def更改_状态():
名称=下一个(状态)
name=name.format(n=len(client.guilds))
#请注意,如果占位符“{n}”在字符串中不存在,
#不会发生错误,字符串保持不变
等待客户。更改您的状态(…)
谢谢,它很管用!谢谢,它很管用!
@client.event
async def on_ready():
print('Bot is ready.')
await client.change_presence(activity=discord.Game(name=f"{len(client.guilds)} servers!"))
import asyncio
@client.event
async def on_ready():
print("Bot is ready!")
while not client.is_closed():
await client.change_presence(activity=discord.Game(name=f"{len(client.guilds)} servers!")
await asyncio.sleep(10)
await client.change_presence(activity=discord.Game(name="Status 2")
await asyncio.sleep(10)