我目前正试图在discord python rewrite中为我的discord bot生成一个状态循环命令。我已经发出了status命令,但是让status显示bot所在的所有服务器中的所有用户的数量是不起作用的。当我尝试打印代码时,它工作得很好。当我尝试将其作为一种状态运行时,我始终显示与0个成员一起玩。我不知道如何解决这个问题
代码:
from discord.ext import commands, tasks
import asyncio
import os
import random
from itertools import cycle
client = commands.Bot(command_prefix = '?')
status = cycle(["?help", "Welcoming People", f"Playing with {len(set(client.users))} users"])
@client.remove_command('help')
@client.event
async def on_ready():
change_status.start()
print ('Bot online')
print (f"Playing with {len(client.users)} users")
@tasks.loop(seconds=10)
async def change_status():
await client.change_presence(status=discord.Status.idle, activity=discord.Game(next(status)))```
它不能按预期工作的原因如下:
我们用一个没有更新的数组启动一个循环。为了解释,让我们键入它(我们感兴趣的字符串):
在创建字符串的那一刻,我们在那一刻输入值。这就变成了:
这将在阵列周期保持时使用。因为cycle只知道这个字符串,所以它将只使用这个字符串。 如果要更新字符串,必须手动更改字符串,并在每次需要时进行更新
我建议您创建自己的循环变体。它会更新字符串。一种方法是:
此代码不完整,因为您仍然需要分配
str_member_index
例如。但它会在你的状态中循环。并更新成员计数状态相关问题 更多 >
编程相关推荐