Не могу понять причину.
Делаю почти по аналогии как в видео
https://www.youtube.com/watch?v=nF1p1JjuR3U&t=150s
Только свои данные подставляю.
Вот кусок кода исполняемого файла:
########################################################################
from create_bot import dp
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
import logging # ПРОСТО ВЫВОДИТ В КОНСОЛЬ ИНФОРМАЦИЮ, КОГДА БОТ ЗАПУСТИТСЯ
from aiogram import types
from create_bot import dp, bot
from aiogram.dispatcher import Dispatcher
from aiogram.types import ReplyKeyboardRemove, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, \
InlineKeyboardButton
import sqlite3
import asyncio
import emoji
########################################################################
import datetime
from aiogram.dispatcher.filters import Text
from aiogram.types import message
######################################################################
from aiogram.dispatcher.filters import Command ##
from aiogram.contrib.fsm_storage.memory import MemoryStorage ##
from aiogram.dispatcher.filters.state import StatesGroup, State ##
######################################################################
from keyboards import start1 ## ИМПОРТИРУЕМ ДАННЫЕ ИЗ ФАЙЛОВ keyboard.py
######################
storage = MemoryStorage() # FOR FSM
dp = Dispatcher(bot, storage=storage)
'''async def on_startup():
print('Бот Вышел онлайн')'''
# Тут еще подключение к базе данных будет. чтобы сразу как юзер зашел создадась база данных
logging.basicConfig(format=u'%(filename)s [LINE:%(lineno)d] #%(levelname)-8s [%(asctime)s] %(message)s',
level=logging.INFO,
)
from handlers import state
#state.register_handlers_state(dp)
#admin.register_handlers_admin(dp) пока андминки нет он не нужен
from aiogram.dispatcher import FSMContext
class FSMState(StatesGroup):
waiting_email = State()
@dp.message_handler(commands="start")
async def commands_start(message: types.Message):
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text="Выбрать", callback_data="start_text"))
await message.answer("Приветствую тебя, Evgeny!\n"
"➡️Выбирай с чего начнем:\n", reply_markup=keyboard)
# отлавливаем событие колбек на инлайн кнопке и получаем меню по сценариям
@dp.callback_query_handler(text="start_text")
async def start_text(call: types.CallbackQuery):
await call.message.answer('текст', reply_markup=start1)
#Вот до этого места все работает.
# клавиатура импортирована и работает
#Сценарий1 это команда на кнопке для запуска FSM
# Начало ввода почты
@dp.message_handler(commands='Сценарий1', state=None)
async def get_email(message: types.Message):
await FSMState.waiting_email.set()
await message.reply('Введите почту') #это не появляется, следовательно FSM не запущена.
# Ловим ответ и пишем в словарь
@dp.message_handler(content_types=['waiting_email'], state=FSMState.waiting_email) # временно для понимания
async def get_email(massage: types.Message, state: FSMContext):
async with state.proxy() as data:
data['email'] = message.text
await meassage.reply(str(data))
# Бот выходит из машины состояний. и тут надо еще БД прицепить
await state.finish()
keyboard = types.InlineKeyboardMarkup()
keyboard.add(types.InlineKeyboardButton(text="Записаться1",
1 Верная ли написаны хендлеры?
2 По какой причине не срабатывает?