List all guilds with multiple servers on a single embed(在单个嵌入中列出所有具有多个服务器的公会)
问题描述
这是我当前的代码,它显示了它当前所在的服务器.这是我想要做的,但它效率不高,可以避免,而不是为它获得的每个服务器发送嵌入消息.
This is my current code which shows the servers it is currently in. Which this does what I would like it to do, but it is not efficient and can be avoided instead of sending an embed message for each server it gets.
@client.command()
@commands.is_owner()
async def list_guilds(ctx):
servers = client.guilds
for guild in servers:
embed = discord.Embed(colour=0x7289DA)
embed.set_footer(text=f"Guilds requested by {ctx.author}", icon_url=ctx.author.avatar_url)
embed.add_field(name=(str(guild.name)), value=str(guild.member_count)+ " members", inline=False)
await ctx.send(embed=embed)
我想要做的是循环它所在的所有服务器并仅在单个嵌入中包含 10 个服务器后发送一个嵌入,然后它会发送另一个,避免使用嵌入垃圾邮件.
What I would like to do is loop though all servers it is in and send an embed only after it has included 10 servers on a single embed, then it would send another, avoiding the use of embed spam.
for client.guilds in range(10):
例如,嵌入应该如下所示:
Then for example, the embed should look like:
Guilds list (page 1) showing 10 per embed
Discord server 0
Discord server 1
Discord server 2
Discord server 3
Discord server 4
...
....
这将简单地创建一个包含 10 个服务器的嵌入,名称和服务器所有者等,但目前只需要帮助在一个嵌入上发送多个服务器名称,而不是为每个服务器发送多个嵌入,它会发送目前600+.有人可以帮忙吗?
Which would simply create an embed with 10 servers on it, the name and the server owner etc, but currently just need help with sending multiple server names on one embed, instead of sending multiple embeds for each server, which it would send 600+ currently. Would anyone please be able to help?
推荐答案
迭代列表的每十个值,这里是一个例子:
Iterate every ten values of the list, here's an example:
>>> lst = list(range(1, 26))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..., 25]
>>>
>>> for i in range(0, len(lst), 10):
... print(lst[i:i + 10])
...
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
[21, 22, 23, 24, 25]
这里适用于您的代码:
for i in range(0, len(client.guilds), 10):
embed = discord.Embed(title='Guilds', colour=0x7289DA)
guilds = client.guilds[i:i + 10]
for guild in guilds:
embed.add_field(name=guild.name, value='whatever')
await ctx.send(embed=embed)
这篇关于在单个嵌入中列出所有具有多个服务器的公会的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在单个嵌入中列出所有具有多个服务器的公会


基础教程推荐
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 筛选NumPy数组 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01