Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging, configuration
- from configuration import *
- from aiogram.dispatcher import FSMContext
- from aiogram.dispatcher.filters import Text
- from aiogram.dispatcher.filters.state import State, StatesGroup
- from aiogram.types import ReplyKeyboardRemove, \
- ReplyKeyboardMarkup, KeyboardButton, \
- InlineKeyboardMarkup, InlineKeyboardButton
- from aiogram import Bot, Dispatcher, executor, md, types
- from aiogram.contrib.fsm_storage.memory import MemoryStorage
- logging.basicConfig(level=logging.INFO)
- API_TOKEN = configuration.API_TOKEN
- bot = Bot(token=API_TOKEN)
- storage = MemoryStorage()
- dp = Dispatcher(bot, storage=storage)
- def main_menu(message):
- keyboard = types.InlineKeyboardMarkup(True)
- row = [types.InlineKeyboardButton(text="Регистрация", callback_data="registration")]
- keyboard.row(*row)
- row = [types.InlineKeyboardButton(text="Авторизация", callback_data="auth")]
- keyboard.row(*row)
- row = [types.InlineKeyboardButton(text="Перейти на сайт", callback_data=" ", url=" ")]
- keyboard.row(*row)
- return keyboard
- inline_btn_1 = InlineKeyboardButton('Первая кнопка!', callback_data='button1')
- inline_kb1 = InlineKeyboardMarkup().add(inline_btn_1)
- @dp.message_handler(state='*', commands=["start"])
- @dp.message_handler(Text(equals=['начать'], ignore_case=True), state='*')
- async def send_welcome(message):
- await message.answer("МЕНЮ", reply_markup=main_menu)
- @dp.message_handler(state='*', commands='cancel')
- @dp.message_handler(Text(equals='отмена', ignore_case=True), state='*')
- async def cancel_handler(message: types.Message, state: FSMContext):
- current_state = await state.get_state() # получаем состояние на котором находимся
- if current_state is None:
- return
- await state.finish()
- await bot.send_message(message.chat.id, 'Отмена регистрации.')
- ###################################### регистрация #####################################################
- class Form_registration(StatesGroup):
- name = State()
- password = State()
- email = State()
- category = State()
- @dp.callback_query_handler(lambda c: c.data == 'registration')
- async def send_name(callback_query, message):
- await Form_registration.name.set()
- await message.answer("Укажите логин: ", reply_markup=types.ReplyKeyboardRemove())
- @dp.message_handler(state=Form_registration.name)
- async def send_password(message: types.Message, state: FSMContext):
- async with state.proxy() as data:
- data['name'] = message.text
- await Form_registration.next()
- await message.answer("Укажите пароль: ")
- @dp.message_handler(lambda message: message.text, state=Form_registration.password)
- async def send_emai(message: types.Message, state: FSMContext):
- await Form_registration.next()
- await state.update_data(password=message.text)
- await message.answer("Укажите email: ")
- @dp.message_handler(
- lambda message: ('@' not in message.text) or (('.com' not in message.text) and ('.ru' not in message.text)),
- state=Form_registration.email)
- async def check_email(message: types.Message):
- return await message.reply("Некорректно введен email.\nУкажите email: ")
- @dp.message_handler(lambda message: message.text, state=Form_registration.email)
- async def send_group(message: types.Message, state: FSMContext):
- await Form_registration.next()
- await state.update_data(email=message.text)
- markup = types.ReplyKeyboardMarkup(resize_keyboard=True, selective=True)
- markup.add("ИС-16", "ИС-17", "ИС-18")
- markup.add("ИС-19", "ИЭ-17", "ИЭ-17")
- await message.answer("Укажите вашу группу: ", reply_markup=markup)
- @dp.message_handler(lambda message: message.text not in ["ИС-16", "ИС-17", "ИС-18", "ИС-19", "ИЭ-17", "ИЭ-17"],
- state=Form_registration.category)
- async def process_gender_invalid(message: types.Message):
- return await message.reply("Неверно указана группа, пожалуйства выберите группу")
- @dp.message_handler(state=Form_registration.category)
- async def process_gender(message: types.Message, state: FSMContext):
- async with state.proxy() as data:
- data['category'] = message.text
- print(data['name'], data['email'])
- await state.finish()
- if __name__ == '__main__':
- executor.start_polling(dp, skip_updates=True)
Add Comment
Please, Sign In to add comment