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)
这篇关于在单个嵌入中列出所有具有多个服务器的公会的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在单个嵌入中列出所有具有多个服务器的公会
基础教程推荐
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
