Пишу бота который должен считать данные пользователя и отправить его администраторам на рассмотрение. Не могу написать сбор имени, даты рождения и т.д., программа зависает на просьбе ввести ФИО. Я новичок поэтому можно больше разъяснений.
bot = Bot(token)
dp = Dispatcher(bot)
dp = Dispatcher(bot, storage=MemoryStorage())
dp.middleware.setup(LoggingMiddleware())
# клавиши да нет
button_yes = InlineKeyboardButton("ДА", callback_data="answ_YES")
button_no = InlineKeyboardButton("НЕТ", callback_data="answ_NO")
inline_kb = InlineKeyboardMarkup().add(button_yes, button_no)
@dp.message_handler(commands=["start"])
async def start_command(message: types.message):
await message.reply("Вас приветствует чат-бот Telegram ", reply=False)
await message.reply("Внимание! Для получения сведений на"
" телефоне должно быть установлено приложение Telegram", reply=False)
await message.reply("У вас установлено приложение Telegram?", reply_markup=inline_kb, reply=False)
@dp.message_handler(commands=["doc"], state=None)
async def documents(message: types.message):
await message.reply("Для отправки запроса на получение Номера, нужно ввеести свои данные. Прошу указать:")
await FMSUser.name.set()
await message.reply("Фамилию Имя Отчество:")
# Ловим Имя
@dp.message_handler(content_types=["name"], state=FMSUser.name)
async def load_name(message: types.Message, state=FSMContext):
await print("123")
global Name
Name = message.text
await FMSUser.next()
await message.reply("Введите день рождения:", reply=None)
await print(Name)
# ловим день рождения
@dp.message_handler(state=FMSUser.date_of_birth)
async def load_date_of_birth(message: types.Message, state=FSMContext):
Date_of_birth = message.text
await print(Date_of_birth)
await FMSUser.next()
await message.reply("Введите ИНН:")
# ловим ИНН
@dp.message_handler(state=FMSUser.INN)
async def load_INN(message: types.Message, state=FSMContext):
Inn = message.text
await print(Inn)
await FMSUser.next()
await message.reply("Введите паспортные данные:")
# ловим паспортные данные
@dp.message_handler(state=FMSUser.passport)
async def load_passport(message: types.Message, state=FSMContext):
Passport = message.text
await print(Passport)
await FMSUser.finish()
# реакция на нажатие кнопки
@dp.callback_query_handler(Text(startswith="answ_"))
async def callback_func(callback: types.CallbackQuery):
answer = callback.data.split("_")[1]
if answer == "YES":
await callback.message.reply("Хорошо, продолжаем! Напишите команду "
"/doc")
elif answer == "NO":
await callback.message.reply("Извините мы не сможем предоставить вам услугу!")
await bot.answer_callback_query(callback.id)
if __name__ == '__main__':
executor.start_polling(dp)