#python #python-3.x #discord #discord.py #discord.py-rewrite
#python #python-3.x #Discord #discord.py #discord.py-переписать
Вопрос:
Итак, у меня есть команда whois, которая работает нормально, но я пытаюсь сделать это, когда я говорю .whois me, он показывает мою информацию. Но я попробовал использовать оператор if, он не сработал
Код:
@client.command(pass_context=True)
async def whois(ctx, member : discord.Member):
with open('main codembot json storagepp.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)
Ответ №1:
Это невозможно с текущим имеющимся у вас кодом, вы используете MemberConverter
, если вы ставите me
, что это не сработает, вы можете просто сделать аргумент member необязательным, и когда он None
используется ctx.author
в качестве аргумента member
@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
равным и проверить это вместо этого. Это изменило бы вашу команду самостоятельного whois с .whois me
на just .whois
.
В качестве альтернативы, вы можете ожидать строку и самостоятельно анализировать пользователя.