Treimox
@Treimox

Как забрать всю строку после команды?

Приветствую, мне нужно забрать всю строку после команды. Использовал split(), но это не то, мне нужны все слова, которые введёт юзер, а не определенный элемент списка. Машину состояний прошу не советовать.
Как можно забрать всю строку?

@dp.message_handler(commands=['ударить'], commands_prefix='+')
async def kickOut(message: types.Message):
     if not message.reply_to_message:
         await message.answer("[] Используй: +ударить [ответ на сообщение] [комментарий (необязательно)]")
         return
     # ========= User Settings ==========
     first_id = message.from_user.first_name
     linkFirst = f"tg://user?id={message.from_user.username}"
     textFirst = hlink(first_id, linkFirst)

     twoId = message.reply_to_message.from_user.first_name
     linkTwo = f"tg://user?id={message.reply_to_message.from_user.username}"
     textTwo = hlink(twoId, linkTwo)
     # ==================================

     if not message.text.split()[1:]:
         await message.answer(f" | {textFirst} ударил в личико {textTwo}", parse_mode='HTML')
     else:
         await message.answer(f" | {textFirst} ударил в личико {textTwo}\nСо словами: {message.text.split()[1:][0]}", parse_mode='HTML')
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@puzaka
Если text = '+ударить ха тьфу тебе в лицо'
и нам нужно получить 'ха тьфу тебе в лицо' , то можно использовать регулярку:
import re
text = '+ударить ха тьфу тебе в лицо'
text = re.findall(r'\s(?:.+)', message.text)[0]
print(text)  # ' ха тьфу тебе в лицо'   убрать первый пробел, я думаю, не будет проблемой

Можно через .replace()
text = '+ударить ха тьфу тебе в лицо'
print(text.replace('+ударить ', ''))  # 'ха тьфу тебе в лицо'

Можно через .join()
text = '+ударить ха тьфу тебе в лицо'
print(' '.join(text.split()[1:]))  # 'ха тьфу тебе в лицо'
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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