【发布时间】:2019-05-07 15:52:51
【问题描述】:
我多次尝试这样做,但没有成功。
Python 版本:3.6
discord.py: 异步
【问题讨论】:
标签: python python-3.x discord discord.py
我多次尝试这样做,但没有成功。
Python 版本:3.6
discord.py: 异步
【问题讨论】:
标签: python python-3.x discord discord.py
试试这个@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="```json\n" + x + "```", colour=0xFFFFF)
return await ctx.send(embed=embed)
【讨论】:
我假设您已将机器人定义为 client。
client.guilds 是您的机器人所在的Guilds 列表。
要获取列表中的项目数量(在您的情况下是服务器的数量),请使用 len(list)。
在您的情况下,这将是 len(client.guilds)。
您似乎也希望将其设置为状态,请参阅如何设置on the documentation
不要更改on_ready() 中的状态!有关详细信息,请参阅上面的文档链接。
【讨论】:
【讨论】:
@client.event #ready
async def on_ready():
print('Servers connected to:')
for guild in client.guilds:
print(guild.name)
await asyncio.sleep(3)
【讨论】:
由于我认为您正在尝试将其设置为 Playing 状态,这就是我为我的机器人所做的(在 Python 3.6 上完美运行): 因此,您的 on_ready 任务会告诉您机器人何时登录:
@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.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))
【讨论】:
Client.servers 是机器人所属的 Server 对象的可迭代对象。您可以使用len 获得长度:
len(client.servers)
【讨论】: