Closed Dev-Cored closed 2 months ago
Привет, по этому вопросу есть целая глава: https://mastergroosha.github.io/aiogram-3-guide/fsm/
Проблема в том, что там обсуждается ввода готового текста с кнопки, а меня интересует ввод пользователем с клавиатуры. Т.е. После вопроса от бота "Введите число от 1 до 100" не добавлять 100 кнопок, а на прямую от пользователя получить ввод. И спасибо за быстрый отклик)
Все, понял! Прости за беспокойство
Вот минимальный воспроизводимый пример с решением: (aiogram 3.10.0)
import asyncio
from aiogram import Bot, Dispatcher, Router
from aiogram.filters import BaseFilter, CommandStart, StateFilter
from aiogram.fsm.context import FSMContext
from aiogram.types import Message
dp = Dispatcher()
bot = Bot(token="токен")
router = Router()
class TextNumberFilter(BaseFilter):
async def __call__(self, message: Message) -> bool:
if not message.text.isdigit():
return False
return 1 <= int(message.text) <= 100
@router.message(CommandStart())
async def cmd_start(message: Message, state: FSMContext):
await message.answer("Введите число")
await state.set_state("entering_number")
@router.message(StateFilter("entering_number"), TextNumberFilter())
async def on_valid_number(message: Message, state: FSMContext):
await message.answer("Да, это хорошее число. Спасибо! Повторить: /start")
await state.clear()
@router.message(StateFilter("entering_number"))
async def on_invalid_number(message: Message):
await message.answer("Это плохое число. Попробуйте ещё раз.")
async def main():
dp.include_router(router)
print("Starting polling...")
async with bot:
await dp.start_polling(bot)
if __name__ == '__main__':
asyncio.run(main())
@MasterGroosha Мастер Груша, прости за очередное беспокойство! Я просто не понимаю, что не так в моем коде. Бот полностью игнорирует все сообщения. https://github.com/Dev-Cored/life-author-telegram-bot Вот ссылка на реп. Пытался повторить структуру файлов как в главе с роутерами, но просто нет реакции на сообщения. Просто пишет про игнорирование команды...
Привет, Груша! Прости за глупый вопрос, но я не нашел в твоей книге про то, как сделать, чтобы после сообщения бот ждал от пользователя ответ набранный с клавиатуры как сообщение. И чтобы затем можно было это сообщение обработать. Пошарился по этому вопросу в интернете, все ответы на эту тему кардинально отличаются друг от друга и ничего не работает. Было бы очень приятно, если бы ты немного дополнил свою наикрутейшую, без преувеличений, книгу! Спасибо заранее))