@FreeZe123

Как сделать чтобы когда пишешь !avatar @ (без пользователя, просто с @), не выдавало ошибку?

Как сделать чтобы когда пишешь !avatar @ (без пользователя, просто с @), не выдавало ошибку ( raise BadArgument('Member "{}" not found'.format(argument))
discord.ext.commands.errors.BadArgument: Member "@" not found
) а писало что-то типо "Пользователь не найден."
Вот мой код -
@client.command(aliases = ["Аватар","Avatar","аватар"])#avatar
async def avatar(ctx, member : discord.Member = None):
    if ctx.channel.id == 698879971942203524:
        user = ctx.message.author if (member == None) else member
        embed = discord.Embed(title=f'Avatar {user.name}', color= 0x9006E6)
        embed.set_image(url=user.avatar_url)
        embed.set_footer(text="Команда вызвана: {}".format(ctx.author.name), icon_url=ctx.author.avatar_url)
        await ctx.send(embed=embed)
  • Вопрос задан
  • 210 просмотров
Решения вопроса 2
Ловить ошибку в событии on_error_command(context, error): https://discordpy.readthedocs.io/en/v1.4.1/ext/com...

Либо в наследуемом классе:
from discord.ext import commands
from contextlib import suppress

class MyBot(commands.Bot):
    async def on_command_error(self, ctx, error):
        if isinstance(error, commands.BadArgument):
            await ctx.send(f"Неверный аргумент: {error.message}")
        else:
            await super().on_command_error(ctx, error)  # вызывает изначальное поведение on_error_message

bot = MyBot(command_prefix="!")


Либо просто в функции-"слушателе":
from discord.ext import commands
from contextlib import suppress

bot = commands.Bot(command_prefix="!")

@bot.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.BadArgument):
        await ctx.send(f"Неверный аргумент: {error.message}")
Ответ написан
Комментировать
shurshur
@shurshur
Сисадмин, просто сисадмин...
Можно не указывать тип аргумента member, а дальше проверять условие isinstance (member, discord.Member) и в зависимости от этого по-разному реагировать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы