在单个嵌入中列出具有多台服务器的所有行会 [英] List all guilds with multiple servers on a single embed

查看:50
本文介绍了在单个嵌入中列出具有多台服务器的所有行会的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我当前的代码,该代码显示了当前所在的服务器.它可以执行我希望的工作,但是效率不高,可以避免,而不必为获得的每个服务器发送嵌入消息./p>

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]

此处已应用于您的代码:

Here's applied to your code:

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)

这篇关于在单个嵌入中列出具有多台服务器的所有行会的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆