discord.py:计数之间的总和 [英] discord.py: sum between counts

查看:69
本文介绍了discord.py:计数之间的总和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个提供特定信息的命令,但无法获取其中某些信息的总和。
它不会给我任何错误,所以我不知道问题出在哪里。

I am creating a command that gives specific information but I am unable to get the sum of some of this information out. It doesn't give me any mistakes so I don't know what the problem is.

@client.command(aliases=["serverinfo","Server_info","Serverinfo","SERVERINFO","si","Si","SI"])
@commands.has_any_role('Moderatori', 'Triumvirato', 'Co-Triumvirato', 'Senatori', '690956686147453048')
async def ServerInfo(ctx):
    author = ctx.author.name
    guild = ctx.guild
    #general info
    name_server = guild.name
    icon_server = guild.icon_url
    create_server = guild.created_at
    owner_server = guild.owner.name
    #members info
    total_member_server = guild.member_count
    humans_member_server = sum(not member.bot for member in ctx.guild.members)
    bots_member_server = sum(member.bot for member in ctx.guild.members)
    online_member_server = sum(member.status !='offline' and not member.bot for member in ctx.guild.members)
    offline_member_server = sum(member.status =='offline' and not member.bot for member in ctx.guild.members)
    #specific member info
    triumvirato = get(guild.roles, id=int("690951634183782461"))
    user_with_triumvirato = [m for m in guild.members if triumvirato in m.roles]
    count_triumvirato = len(user_with_triumvirato)
    co_triumvirato = get(guild.roles, id=int("690954867346243624"))
    user_with_co_triumvirato = [m for m in guild.members if co_triumvirato in m.roles]
    count_co_triumvirato = len(user_with_co_triumvirato)
    presidente = get(guild.roles, id=int("690956686147453048"))
    user_with_presidente = [m for m in guild.members if presidente in m.roles]
    count_presidente = len(user_with_presidente)
    senatore = get(guild.roles, id=int("690960692051705896"))
    user_with_senatore = [m for m in guild.members if senatore in m.roles]
    count_senatore = len(user_with_senatore)
    moderatore = get(guild.roles, id=int("700353561392971877"))
    user_with_moderatore = [m for m in guild.members if moderatore in m.roles]
    count_moderatore = len(user_with_moderatore)
    membro = get(guild.roles, id=int("690963300707729408"))
    user_with_membro = [m for m in guild.members if membro in m.roles]
    count_membro = len(user_with_membro)
    accademico = get(guild.roles, id=int("690964416644251750"))
    user_with_accademico = [m for m in guild.members if accademico in m.roles]
    count_accademico = len(user_with_accademico)
    onorario = get(guild.roles, id=int("690965300769980476"))
    user_with_onorario = [m for m in guild.members if onorario in m.roles]
    count_onorario = len(user_with_onorario)
    gamer = get(guild.roles, id=int("717907485939204126"))
    user_with_gamer = [m for m in guild.members if gamer in m.roles]
    count_gamer = len(user_with_gamer)
    clandestino = get(guild.roles, id=int("690972809219801088"))
    user_with_clandestino = [m for m in guild.members if clandestino in m.roles]
    count_clandestino = len(user_with_clandestino)
    official_member_count = sum(count_triumviro + count_co_triumvirato + count_co_triumvirato + count_senatore + count_moderatore + count_membro)
    official_e_accademici_member_count = sum(official_member_count + count_accademico)
    non_official_member_count = sum(count_onorario + count_gamer + count_clandestino)
    #channels info
    total_channel_server = len(guild.channels)
    category_server = len(guild.categories)
    text_channel_server = len(guild.text_channels)
    vocal_channel_server = len(guild.voice_channels)
    #role info
    total_role_server = len(guild.roles)
    #boost info
    boost_level_server = guild.premium_tier
    number_boost_server = guild.premium_subscription_count

    embed = discord.Embed(
        title="Informazioni del server",
        description=f'Tutte le informazioni generali del nostro server {name_server}',
        color=0x003399
    )
    embed.set_thumbnail(url='')
    embed.set_footer(text=f'Richiesto da: {author}')
    embed.set_thumbnail(url=f'{icon_server}')
    embed.add_field(
        name='Server creato il:',
        value=f'{create_server}',
        inline=False
    )
    embed.add_field(
        name='Owner Attuale del server:',
        value=f'{owner_server}',
        inline=False
    )
    embed.add_field(
        name='Informazioni membri:',
        value=f'I membri totali sono **{total_member_server}** suddivisi in:\n**{humans_member_server}** umani , **{bots_member_server}** bot\nCi sono **{online_member_server}** online e **{offline_member_server}** offline al momento',
        inline=False
    )
    embed.add_field(
        name=f'I membri totali del {name_server} sono suddivisi in:',
        value=f'{triumvirato.mention}: **{count_triumvirato}**\n{co_triumvirato}: **{count_co_triumvirato}**\n{presidente}: **{count_presidente}**\n{senatore}: **{count_senatore}**\n{moderatore}: **{count_moderatore}**\n{membro}: **{count_membro}**\n{accademico}: **{count_accademico}**\n{onorario}: **{count_onorario}**\n{gamer}: **{count_gamer}**\n{clandestino}: **{count_clandestino}**\n\nI membri ufficiali sono **{official_member_count}** e se contassimo pure gli accademici il totale salirebbe a **{official_e_accademici_member_count}**\nIl resto è composto da **{non_official_member_count}**',
        inline=False
    )
    embed.add_field(
        name='Informazioni canali:',
        value=f'I canali totali sono **{total_channel_server}** su **{category_server}** categorie suddivisi in:\n**{text_channel_server}** canali testuali\n**{vocal_channel_server}** canali vocali.',
        inline=False
    )
    embed.add_field(
        name=f'Numero totale dei ruoli:',
        value=f'**{total_role_server}**',
        inline=False
    )
    embed.add_field(
        name='Livello Boost del server:',
        value=f'**{boost_level_server}**',
        inline=True
    )
    embed.add_field(
        name='Numero totale di Boost ricevuti:',
        value=f'**{number_boost_server}**',
        inline=True
    )
    await ctx.send(embed=embed)

特别是我在这里遇到问题:

Specifically I have problems here:

    official_member_count = sum(count_triumviro + count_co_triumvirato + count_co_triumvirato + count_senatore + count_moderatore + count_membro)
    official_e_accademici_member_count = sum(official_member_count + count_accademico)
    non_official_member_count = sum(count_onorario + count_gamer + count_clandestino)


embed.add_field(
        name=f'I membri totali del {name_server} sono suddivisi in:',
        value=f'{triumvirato.mention}: **{count_triumvirato}**\n{co_triumvirato}: **{count_co_triumvirato}**\n{presidente}: **{count_presidente}**\n{senatore}: **{count_senatore}**\n{moderatore}: **{count_moderatore}**\n{membro}: **{count_membro}**\n{accademico}: **{count_accademico}**\n{onorario}: **{count_onorario}**\n{gamer}: **{count_gamer}**\n{clandestino}: **{count_clandestino}**\n\nI membri ufficiali sono **{official_member_count}** e se contassimo pure gli accademici il totale salirebbe a **{official_e_accademici_member_count}**\nIl resto è composto da **{non_official_member_count}**',
        inline=False
    )

应该带来的是显示某些角色的完整总和,以提供更详细的统计信息。

What it should bring is to show the complete sum of some roles to have an even more detailed statistic.

推荐答案

我解决了这个问题:

    official_member_count = len(user_with_triumvirato) + len(user_with_co_triumvirato) + len(user_with_presidente) + len(user_with_senatore) + len(user_with_moderatore) + len(user_with_membro)
    official_e_accademici_member_count = len(user_with_triumvirato) + len(user_with_co_triumvirato) + len(user_with_presidente) + len(user_with_senatore) + len(user_with_moderatore) + len(user_with_membro) + len(user_with_accademico)
    non_official_member_count = len(user_with_gamer) + len(user_with_onorario) + len(user_with_clandestino)

在我没有添加之前,因为我只是在变量之间添加,所以必须对要添加的每个角色使用 len 函数进行求和。

Before it did not go because I simply added between variables, instead we have to do the sum using the len function on each role in which we want to add.

这篇关于discord.py:计数之间的总和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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