【问题标题】:discord.py: variable server-infodiscord.py:变量服务器信息
【发布时间】:2021-03-01 19:32:39
【问题描述】:

您好,我正在执行一个命令来获取服务器信息,并且正在查看 API(最近是 discord.py 程序)。 我只是无法定义一些变量,我专门发送变量代码(其余的工作完美)。 我还寻找可以回答我的问题,但我发现不同的答案不能满足我的要求(以防万一我道歉)

async def serverinfo(ctx):
    author = ctx.author.name
    guild = ctx.guild
    name_server = guild.name
    icon_server = guild.icon_url
    create_server = guild.created_at
    owner_server = guild.owner.name
    total_member_server = guild.member_count

    #From here I can't find variables
    
    online_member_server = guild.online_members
    offline_member_server = guild.offline_members
    human_member_server = guild.memberUser
    bot_member_server = guild.member_bot
    total_channel_server = guild.channels
    text_channel_server = guild.text_channels
    vocal_channel_server = guild.voice_channels
    category_server = guild.categories
    total_role_server = guild.role_count
    boost_level_server = guild.level_boost
    number_boost_server = guild.boost

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    您的某些变量是有效的,例如 guild.member_countguild.text_channelsguild.voice_channelsguild.channelsguild.categories,但您以错误的方式使用它们。除了guild.member_count,这些属性返回列表,而不是整数,所以如果你想要它们的总数,你需要使用len(property)

    channels_info = {
        "total categories": len(guild.categories)
        "total channels": len(guild.channels)
        "total text channels": len(guild.text_channels)
        "total voice channels": len(guild.voice_channels
    }
    
    members_info = {
        "total users": guild.member_count
        "total online members": sum(member.status==discord.Status.online and not member.bot for member in ctx.guild.members)
        "total offline members": sum(member.status==discord.Status.offline and not member.bot for member in ctx.guild.members)
        "total humans": sum(not member.bot for member in ctx.guild.members)
        "total bots": sum(member.bot for member in ctx.guild.members)
    }
    
    • 获取role信息:
    roles_info = {
        "total roles": len(guild.roles)
    }
    
    boosts_info = {
        "boost level": guild.premium_tier
        "total boosts": guild.premium_subscription_count
    }
    

    【讨论】:

    • 它工作但有一个问题......它标记我所有非机器人用户在线和 0 离线
    • 哪一行(或变量)?
    • 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) 返回在线部分的所有用户,离线部分返回 0
    • 我真的不知道问题出在哪里 ^^ online_member_server 会为您提供所有非 bots 在线会员,offline_member_server 也会这样做,但适用于离线会员
    • 我给你发了一张图片(它是用意大利语写的,但下划线的部分我认为你理解的是英文)和下面我使用的代码(你推荐的那个)。输出:cdn.discordapp.com/attachments/640563710104043530/… 变量:cdn.discordapp.com/attachments/640563710104043530/…
    【解决方案2】:

    您必须打开所有意图并在您的代码中使用它fetch_offline_members=True 像这样

    client = commands.Bot(command_prefix="c!",intents=intents,fetch_offline_members=True)
    

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-24
      • 2021-05-30
      • 1970-01-01
      • 2011-03-10
      • 2020-10-21
      • 1970-01-01
      相关资源
      最近更新 更多