我尝试过多次,但都没有成功。
Python版本:3.6
discord.py:异步
试试这个;
@client.command()
async def servers():
servers = list(self.client.servers)
await client.say(f"Connected on {str(len(servers))} servers:")
await client.say('n'.join(server.name for server in servers))
要将其设置为机器人的状态,以下是一个示例:
f"over {len(client.guilds)} servers.
更多信息可以在这里找到
Client.servers
是机器人程序所属的Server
对象的可迭代对象。你可以用len
:得到它的长度
len(client.servers)
由于我认为您正试图将其设置为正在播放状态,以下是我为我的机器人所做的操作(在Python 3.6上完美工作(:因此,当机器人登录时,你会有一个准备就绪的任务告诉你:
@client.event
async def on_ready():
print('The bot is logged in.')
await client.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name=f"{len(client.guilds)} servers!"))
这将表示监视(服务器数量(服务器!关于您的状态,但对于播放状态,您可以尝试以下操作:
@client.event
async def on_ready():
print('The bot is logged in.')
await client.change_presence(activity=discord.Game(name=f"{len(client.guilds)} servers!"))
@client.event #ready
async def on_ready():
print('Servers connected to:')
for guild in client.guilds:
print(guild.name)
await asyncio.sleep(3)
我假设您已经将bot定义为client
。
client.guilds
是您的机器人所在的Guild
的列表。
要获取列表中的项目数量(在您的情况下是服务器数量(,请使用len(list)
在你的情况下,那将是len(client.guilds)
。
您似乎也希望将其设置为状态,请参阅文档中的操作方法
不要在on_ready()
中更改状态!有关更多信息,请参阅上面的文档链接。
试试这个@Avery B
@client.command()
async def serverlist(ctx):
x = ', '.join([str(server) for server in client.guilds])
y = len(client.guilds)
print("Server list: " + x)
if y < 40:
embed = discord.Embed(title="Currently active on " + str(y) + " servers:",
description="```jsonn" + x + "```", colour=0xFFFFF)
return await ctx.send(embed=embed)