Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Main
- from aiogram.dispatcher import Dispatcher
- from aiogram.utils import executor
- import logging # ПРОСТО ВЫВОДИТ В КОНСОЛЬ ИНФОРМАЦИЮ, КОГДА БОТ ЗАПУСТИТСЯ
- from aiogram import types, Dispatcher
- from create_bot import dp, bot
- from aiogram.types import ReplyKeyboardMarkup, InlineKeyboardMarkup, ReplyKeyboardRemove
- import emoji
- from aiogram.dispatcher.filters import Text
- from aiogram.types import message
- from aiogram.dispatcher.filters import Command
- from aiogram import Bot, types
- from keyboards.keyboard import start1, btn1, btn2, btn3 ## ИМПОРТИРУЕМ ДАННЫЕ ИЗ ФАЙЛОВ keyboard.py
- from data_base import sqlite_db1 # первая база марафон
- from handlers import Partnerbase1
- logging.basicConfig(format=u'%(filename)s [LINE:%(lineno)d] #%(levelname)-8s [%(asctime)s] %(message)s',
- level=logging.INFO,
- )
- async def on_startup(self):
- sqlite_db1.sql_start()
- Partnerbase1.register_handlers_partnerbase1(dp)
- @dp.message_handler(commands="start")
- async def commands_start(message: types.Message):
- await types.ChatActions.upload_photo()
- media = types.MediaGroup()
- media.attach_photo(types.InputFile('1.jpg'))
- await message.answer_media_group(media=media)
- keyboard = types.InlineKeyboardMarkup()
- keyboard.add(types.InlineKeyboardButton(text="Начинаем", callback_data="start1"))
- await message.answer('текст', reply_markup=keyboard)
- @dp.callback_query_handler(text="start1")
- async def start_text2(call: types.Message):
- await types.ChatActions.upload_photo()
- media = types.MediaGroup()
- media.attach_photo(types.InputFile('2.jpg'))
- await call.message.answer_media_group(media=media)
- keyboard1 = types.InlineKeyboardMarkup()
- keyboard1.add(types.InlineKeyboardButton(text="Конечно", callback_data="start2"))
- await call.message.answer(F'текст', reply_markup=keyboard1)
- @dp.callback_query_handler(text="start2")
- async def start_text2(call: types.Message):
- keyboard2 = types.InlineKeyboardMarkup()
- keyboard2.add(types.InlineKeyboardButton(text="ДА, Я ВИЖУ", callback_data="start3"))
- await call.message.answer('Отлично! 😉\n'
- 'текст\n'
- ,reply_markup=keyboard2)
- @dp.callback_query_handler(text="start3")
- async def start_text2(call: types.Message):
- await call.message.answer(F'текст\n')
- await types.ChatActions.upload_photo()
- media = types.MediaGroup()
- media.attach_photo(types.InputFile('3.jpg'))
- await call.message.answer_media_group(media=media)
- await call.message.answer(F'текст', reply_markup=start1)
- ==========
- keyboard
- from aiogram import types
- from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
- import emoji
- ######################################################
- knopka1 = types.KeyboardButton('1') # ДОБАВЛЯЕМ КНОПКУ СЦЕНАРИИ
- knopka2 = types.KeyboardButton('Нет') # ДОБАВЛЯЕМ КНОПКУ СЦЕНАРИИ
- start1 = types.ReplyKeyboardMarkup(resize_keyboard=True) # СОЗДАЕМ ВООБЩЕ ОСНОВУ ДЛЯ КНОПОК
- start1.add(knopka1, knopka2) #ДОБАВЛЯЕМ ИХ В БОТА с учетом разрешенной ширины и вместимости в строке
- ============
- Handlers/Partnerbase1
- from aiogram.dispatcher import FSMContext
- from aiogram.dispatcher.filters.state import State, StatesGroup
- from aiogram import types, Dispatcher
- from aiogram.types import ReplyKeyboardRemove
- import re
- from data_base import sqlite_db1
- class FSMPartnerbase1(StatesGroup):
- name = State()# Начало ввода почты
- # @dp.message_handler(content_types=['text'], text='1', state=None)
- async def cm_start(message: types.Message):
- await FSMPartnerbase1.name.set()
- await message.answer('🤖<b>'+message.from_user.first_name+'</b>, пожалуйста, укажите Вашу правильную почту. Она нужна для корректной работы с Вами❗️')
- print("FSM запущена")
- # Ловим ответ и пишем в словарь
- # @dp.message_handler(state=FSMPartnerbase1.name) #временно для понимания
- async def get_email(message: types.Message, state: FSMContext):
- async with state.proxy() as data:
- data['user_id'] = message.from_user.id #то есть получить от usera его ID
- user_id = message.from_user.id
- await state.update_data(
- {'user_id': user_id}
- )
- data['username'] = message.from_user.username
- username = message.from_user.username
- await state.update_data(
- {'username': username}
- )
- data['name'] = message.text
- name = message.text
- await state.update_data(
- {'name': name}
- )
- regex = re.compile(r'([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(\.[A-Z|a-z]{2,})+')
- if re.fullmatch(regex, name):
- print("Valid email")
- await sqlite_db1.sql_add_command(state)
- await state.finish()
- else:
- await message.answer('🤖<b>'+message.from_user.first_name+',</b> пожалуйста, введите правильную электронную почту. Она необходима для дальнейшей работы с Вами❗️')
- print("Invalid email")
- def register_handlers_partnerbase1(dp: Dispatcher):
- dp.register_message_handler(cm_start, content_types=['text'], text='1', state=None)
- dp.register_message_handler(get_email, state=FSMPartnerbase1.name)
- ============
- sqlite_db1
- import sqlite3
- db = sqlite3.connect('data_base/db.db')
- sql = db.cursor()
- if db:
- print('Подключился к БД1')
- sql.execute('CREATE TABLE IF NOT EXISTS partners1(user_id INTEGER, username STRING, e_mail STRING)')
- db.commit()
- async def sql_add_command(state):
- async with state.proxy() as data:
- sql.execute('INSERT INTO partners1 VALUES (?, ?, ?)', tuple(data.values()))
- db.commit()
- При запуске ошибок не дает.
- база данных создается.
- но при нажатии кнопки 1 не появляется сообщение о введении почты и не понятно срабатывает ли FSM
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement