Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import logging
- from os import getenv
- import aiogram.utils.markdown as md
- import aiomysql
- from aiogram.types import ReplyKeyboardRemove, \
- ReplyKeyboardMarkup, InlineKeyboardButton, InlineKeyboardMarkup, CallbackQuery, ParseMode, ContentType
- import asyncio
- import time
- from aiogram import Bot, Dispatcher, types
- from aiogram.dispatcher import FSMContext
- from aiogram.dispatcher.filters import Text, state
- from aiogram.dispatcher.filters.state import State, StatesGroup
- from aiogram.utils import executor
- from aiogram.contrib.fsm_storage.memory import MemoryStorage
- from aiogram.dispatcher.filters import Command, Text
- from aiogram.types import Message
- import random
- bot_token = getenv("BOT_TOKEN")
- if not bot_token:
- exit("Error: no token provided")
- loop = asyncio.get_event_loop()
- storage = MemoryStorage()
- bot = Bot(token=bot_token)
- # Диспетчер для бота
- dp = Dispatcher(bot, storage=storage)
- # Включаем логирование, чтобы не пропустить важные сообщения
- logging.basicConfig(level=logging.INFO)
- class Form(StatesGroup):
- name = State()
- start_text = "Привет 👋🏻 Выбери интересующее тебя меню ниже👇🏻"
- start_keyboard = InlineKeyboardMarkup().add(InlineKeyboardButton(text="Каталог", callback_data="Catalog"))
- count = 0
- class InputData(StatesGroup):
- input_fio = State()
- @dp.message_handler(state='*', commands='cancel')
- @dp.message_handler(Text(equals='cancel', ignore_case=True), state='*')
- async def cancel_handler(message: types.Message, state: FSMContext, query: CallbackQuery):
- current_state = await state.get_state()
- if current_state is None:
- return
- @dp.message_handler(Command('Start'))
- async def start(message: types.Message, state: FSMContext):
- await state.finish()
- keyboard = InlineKeyboardMarkup(row_width=2).add(
- InlineKeyboardButton(text="🎟 КУПИТЬ ПРОХОДКУ", callback_data="Купить билет"),
- InlineKeyboardButton(text="🔥 УЗНАТЬ О БЛИЖАЙШЕМ МЕРОПРИЯТИИ", callback_data="info"),
- )
- await message.answer(start_text, reply_markup=keyboard)
- await state.finish()
- conn = await aiomysql.connect(host='localhost', port=3306, user='root', password='', db='aiodb',
- loop=loop)
- cur = await conn.cursor()
- teled = message.from_user.id
- sql = "SELECT teleid FROM users WHERE teleid=(%s)"
- await cur.execute(sql, (teled))
- row = await cur.fetchone()
- if row is not None: # есть хоть одна строка?
- teleid = row[0]
- id = teled
- conn.close
- print(teled)
- else:
- start_sql = "INSERT INTO users (teleid) VALUES (%s)"
- tupe = teled
- await cur.execute(start_sql, tupe)
- await conn.commit()
- conn.close
- yes = 1
- @dp.callback_query_handler(text="MAIN")
- async def start(query: CallbackQuery):
- keyboard = InlineKeyboardMarkup(row_width=2).add(
- InlineKeyboardButton(text="Купить билет", callback_data="Купить билет"),
- InlineKeyboardButton(text="Узнать о мероприятии", callback_data="Films"),
- )
- await query.message.edit_text(text=start_text, reply_markup=keyboard)
- @dp.callback_query_handler(text="Купить билет")
- async def buyit(query: CallbackQuery):
- keyboard = InlineKeyboardMarkup(row_width=2).add(
- InlineKeyboardButton(text="🎫 VIP", callback_data="VIP"),
- InlineKeyboardButton(text="🎟 Стандарт", callback_data="default"),
- InlineKeyboardButton(text="Назад", callback_data="MAIN")
- )
- await query.message.edit_text("🤔Какой билет хочешь купить?", reply_markup=keyboard)
- @dp.callback_query_handler(text="VIP")
- async def vip(query: CallbackQuery):
- keyboard = InlineKeyboardMarkup(row_width=2).add(
- InlineKeyboardButton(text="Купить", callback_data="vipcount"),
- InlineKeyboardButton(text="Назад", callback_data="Купить билет")
- )
- pin = random.randint(100000, 999999)
- print(pin)
- await query.message.edit_text("""
- Стоимость - 750RUB
- """, reply_markup=keyboard)
- #@dp.callback_query_handler(text="vipcount")
- #async def vipcount(query: CallbackQuery):
- # keyboard = InlineKeyboardMarkup(row_width=3).add(
- # InlineKeyboardButton(text=1, callback_data="buyvip:1"),
- # InlineKeyboardButton(text=2, callback_data="buyvip:2"),
- # InlineKeyboardButton(text=3, callback_data="buyvip:3")
- # )
- # await query.message.edit_text("Выберите кол-во билетов", reply_markup=keyboard)
- @dp.callback_query_handler(text_startswith="vipcount")
- async def checkname(query: CallbackQuery):
- keyboard = InlineKeyboardMarkup(row_width=1).add(
- InlineKeyboardButton(text="Назад", callback_data="Купить билет")
- )
- await query.message.answer("Введите свое ФИО")
- await InputData.input_fio.set()
- @dp.message_handler(state=InputData.input_fio)
- async def process_name(message: types.Message):
- conn = await aiomysql.connect(host='localhost', port=3306, user='root', password='',
- db='aiodb',
- loop=loop)
- cur = await conn.cursor()
- teled = message.from_user.id
- sql = "SELECT name FROM users WHERE teleid=(%s)"
- await cur.execute(sql, (teled))
- row = await cur.fetchone()
- name = message.text
- print(row)
- row = row[0]
- print("olk")
- mes = message.text
- teled = message.from_user.id
- start_sql = "UPDATE users set name = (%s) where teleid=(%s)"
- conn = await aiomysql.connect(host='localhost', port=3306, user='root', password='',
- db='aiodb',
- loop=loop)
- cur = await conn.cursor()
- mesg = message.text
- await cur.execute(start_sql, (name, teled))
- await conn.commit()
- await message.answer("Вы успешно добавлены!")
- #################### EXPERIMENTAL AREA ######################
- pin = random.randint(100000, 999999)
- pin_install = "UPDATE users set pin = (%s) where teleid=(%s)"
- conn = await aiomysql.connect(host='localhost', port=3306, user='root', password='',
- db='aiodb',
- loop=loop)
- cur = await conn.cursor()
- await cur.execute(pin_install, (pin, teled))
- await conn.commit()
- await bot.send_message(
- message.chat.id,
- md.text(
- md.text('Ваш персональный пин-код -', md.bold(pin)),
- md.text('Покажите данный пин-код на входе')
- ),
- parse_mode = ParseMode.MARKDOWN,
- )
- print(pin)
- Form.next()
Advertisement
Add Comment
Please, Sign In to add comment