Команда /hug, работает не правильно

у меня есть команда /hug @имя_пользователя. Работает почти отлично, но есть две проблемы.

  1. При написании /hug и какого-то бреда, а не @имя_пользователя, бот выведет данный результат. введите сюда описание изображения

  2. В поле имени даные скобочки и кавычки — [' ']

введите сюда описание изображения

Код:

@dp.message_handler(commands=['hug', 'обнять', 'обнимашки', 'обнял'])
async def hugCommand(message):
    hugtarget = extract_arguments(message.text)
    your_id = message.from_user.id
    your_name = message.from_user.username
    hugimg = nekos.img('hug')
    if not hugtarget:
      await bot.send_message(message.chat.id, f'Введите /hug @имя_пользователя')
    else:
      await bot.send_animation(message.chat.id, hugimg, caption=f'[{hugtarget}], вас обнял [{your_name}](tg://user?id={str(your_id)})', parse_mode="Markdown")

Ответы (1 шт):

Автор решения: ZxNuClear

Уберите или замените скриншоты в вопросе, в качестве ника можно было и другое слово выбрать. А по вопросу, такой вариант для aiogram устроит? При вводе команды /hug - выдается ошибка/инструкция, при вводе /hug ник_участника - выводится "обнимашка" и к нику дописывается @, чтобы он стал кликабельным. Если пользователь пишет /hug @ник_участника, то выводится "обнимашка" с кликабельным ником:

@dp.message_handler(commands=['hug', 'обнять', 'обнимашки', 'обнял'])
async def send_hug(message: types.Message):
    hugtarget = message.get_args().split()
    your_id = message.from_user.id
    your_name = message.from_user.username
    hugimg = nekos.img('hug')
    if not hugtarget:
      await bot.send_message(message.chat.id, f'Введите /hug @имя_пользователя')
    else:
      if hugtarget[0][0] == '@':
        await bot.send_animation(message.chat.id, hugimg, caption=f'[{hugtarget[0]}], вас обнял [{your_name}](tg://user?id={str(your_id)})', parse_mode="Markdown")
      else:
        await bot.send_animation(message.chat.id, hugimg, caption=f'[@{hugtarget[0]}], вас обнял [{your_name}](tg://user?id={str(your_id)})', parse_mode="Markdown")

Если необходимо, чтобы бот на пустой /hug или /hug текст без знака @ выводил ошибку/инструкцию, а при /hug @ник выводил "обнимашку" с кликабельным ником, то замени код на вот этот:

@dp.message_handler(commands=['hug', 'обнять', 'обнимашки', 'обнял'])
async def send_hug(message: types.Message):
    hugtarget = message.get_args().split()
    your_id = message.from_user.id
    your_name = message.from_user.username
    hugimg = nekos.img('hug')
    if not hugtarget or hugtarget[0][0] != '@':
      await bot.send_message(message.chat.id, f'Введите /hug @имя_пользователя')
    else:
      await bot.send_animation(message.chat.id, hugimg, caption=f'[{hugtarget[0]}], вас обнял [{your_name}](tg://user?id={str(your_id)})', parse_mode="Markdown")
→ Ссылка