discord.py:如何显示机器人所在的服务器数量



我尝试过多次,但都没有成功。

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)

相关内容

最新更新