【问题标题】:me statement replacing member discord bot我声明替换成员不和谐机器人
【发布时间】:2020-12-17 20:22:19
【问题描述】:

所以我有一个可以正常工作的 whois 命令,但是当我说 .whois me 时,我正在尝试实现它,它会显示我的信息。但是我尝试了一个 if 语句它不起作用

代码:



@client.command(pass_context=True)
async def whois(ctx, member : discord.Member):

    with open('main code\mbot json storage\pp.json', 'r') as f:
        prefixes = json.load(f)


    if member == "me":
        member = ctx.message.author    #I tried doing this

    prefix = prefixes[str(ctx.guild.id)]

    roles = [role for role in member.roles]


    embed = discord.Embed(colour=member.color, timestamp=ctx.message.created_at)

    embed.set_author(name=f'User Info - {member}')
    embed.set_thumbnail(url=member.avatar_url)
    embed.set_footer(text=f"Asked by {ctx.author}", icon_url=ctx.author.avatar_url)

    embed.add_field(name='ID:', value=member.id)
    embed.add_field(name='Guild name:', value=member.display_name)
    embed.add_field(name='Created At:', value=member.created_at.strftime("%a, %#d %B %Y, %I:%M %p "))
    embed.add_field(name='Joined At:', value=member.joined_at.strftime("%a, %#d %B %Y, %I:%M %p "))
    embed.add_field(name=f'Roles ({len(roles)})', value=" ".join([role.mention for role in roles]))
    embed.add_field(name='Top role:', value=member.top_role.mention)
    embed.add_field(name="Platform", value=f"{'Mobile' if member.is_on_mobile() else 'PC'}", inline=False)
    embed.add_field(name="Admin?", value=f"{member.guild_permissions.administrator}", inline=True)
    embed.add_field(name='Bot?', value=f"{'Bot' if member.bot else 'Human'}", inline=True)

    await ctx.send(embed=embed)


【问题讨论】:

    标签: python python-3.x discord discord.py discord.py-rewrite


    【解决方案1】:

    你当前的代码是不可能的,你正在使用MemberConverter,如果你把me它不起作用,你可以简单地将成员参数设为可选,当它是None时使用ctx.author 作为成员参数

    @bot.command()
    async def whois(ctx, member: discord.Member=None):
        if member is None:
            member = ctx.author
    
        # Put the rest of the code here
    

    调用它只需!whois,它会为您提供您自己的信息。

    【讨论】:

      【解决方案2】:

      我不是 python 专家,但我相信您的命令函数期望 member 参数的类型为 discord.Member。你没有说明运行.whois me时出了什么问题,所以我假设问题是由这种类型的期望引起的。

      我建议将参数默认设置为None,然后检查它。这会将您的 self-whois 命令从 .whois me 更改为 .whois
      或者,您可以期待一个字符串并自己解析用户。

      【讨论】:

        猜你喜欢
        • 2021-05-21
        • 2020-05-10
        • 1970-01-01
        • 2018-03-20
        • 2021-08-30
        • 2021-02-09
        • 1970-01-01
        • 2020-04-15
        • 1970-01-01
        相关资源
        最近更新 更多