discord.py - discord.py:计数之间的总和
问题描述
我正在创建一个提供特定信息的命令,但我无法获取其中一些信息的总和。它没有给我任何错误,所以我不知道问题出在哪里。
@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)
具体来说,我在这里遇到问题:
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
)
它应该带来的是显示某些角色的完整总和,以获得更详细的统计信息。
解决方案
我解决了这个问题:
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
函数对我们要添加的每个角色进行求和。
推荐阅读
- reactjs - 反应在数组中渲染图像数组
- javascript - 在没有初始属性的情况下更新处于 React 状态的对象的方法是什么?
- postgresql - 如何将表从 PostgreSQL 导入 SAP Hana?
- c# - Azure 逻辑应用在触发时触发两次
- javascript - 如何在reactjs中创建一个调用标签的函数?
- php - 运行php脚本并自动通过表单上传文件?
- excel - VBA将数据透视表数据复制到另一个工作表+更改标题
- javascript - Vuetify v-data-table 未显示来自 javascript api fetch 的结果
- jquery - 基于两个数据库字段返回主要字段的 JQuery 自动编译
- python - 过滤在给定列中具有超过 x 数量的 nan 值的用户