Skip to content Skip to sidebar Skip to footer

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 emb

Solution 1:

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 inrange(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 inrange(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)

Solution 2:

I would say you should use a description in this case. You can hold all the information you want in the description about each guild. In the case below that I created, I go through every guild the bot is in and add the name and member count in the existing description_info variable. It just keeps piling on until you reach the end of the list. Then, you can just use that one variable in your embed.

@client.command()@commands.is_owner()asyncdeflist_guilds(ctx):
    servers = client.guilds
    description_info = ""for guild in servers:
        description_info += "**" + str(guild.name) + "**\n" + str(guild.member_count) + " members\n\n"# This will loop through each guild the bot is in and it the name and member count to a variable that holds everything

    embed = discord.Embed(description = description_info, colour=0x7289DA) # Edit the embed line to include the description we created above
    embed.set_footer(text=f"Guilds requested by {ctx.author}", icon_url=ctx.author.avatar_url)
    await ctx.send(embed=embed)

Post a Comment for "List All Guilds With Multiple Servers On A Single Embed"