我声明替换成员不和谐机器人
me statement replacing member discord bot
所以我有一个可以正常工作的 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 专家,但我相信您的命令函数期望 member
参数的类型为 discord.Member
。你在运行.whois me
的时候没有说出什么问题,所以我会假设问题是由这种期望引起的。
我建议将参数默认设置为 None
,然后检查它。这会将您的 self-whois 命令从 .whois me
更改为 .whois
.
或者,您可以期待一个字符串并自己解析用户。
您当前的代码不可能,您使用的是 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
,它会给你你自己的信息。
所以我有一个可以正常工作的 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 专家,但我相信您的命令函数期望 member
参数的类型为 discord.Member
。你在运行.whois me
的时候没有说出什么问题,所以我会假设问题是由这种期望引起的。
我建议将参数默认设置为 None
,然后检查它。这会将您的 self-whois 命令从 .whois me
更改为 .whois
.
或者,您可以期待一个字符串并自己解析用户。
您当前的代码不可能,您使用的是 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
,它会给你你自己的信息。