old_01
This commit is contained in:
@@ -1,103 +1,103 @@
|
||||
import os
|
||||
import logging
|
||||
from aiogram import Bot, Dispatcher, types
|
||||
from aiogram.contrib.middlewares.logging import LoggingMiddleware
|
||||
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
|
||||
from aiogram.utils import executor
|
||||
from aiogram.dispatcher.filters import Text
|
||||
from database import create_tables
|
||||
from logger import log_action
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Загрузка переменных окружения из .env файла
|
||||
load_dotenv()
|
||||
|
||||
API_TOKEN = os.getenv('BOT_API_TOKEN')
|
||||
OPERATORS_GROUP_ID = os.getenv('OPERATORS_GROUP_ID')
|
||||
ADMIN_GROUP_ID = os.getenv('ADMIN_GROUP_ID')
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
bot = Bot(token=API_TOKEN)
|
||||
dp = Dispatcher(bot)
|
||||
dp.middleware.setup(LoggingMiddleware())
|
||||
|
||||
# Inline клавиатуры
|
||||
def main_menu_keyboard():
|
||||
keyboard = InlineKeyboardMarkup()
|
||||
keyboard.add(InlineKeyboardButton('Учетные данные', callback_data='account_data'))
|
||||
keyboard.add(InlineKeyboardButton('Сделать заказ', callback_data='make_order'))
|
||||
keyboard.add(InlineKeyboardButton('История заказов', callback_data='order_history'))
|
||||
keyboard.add(InlineKeyboardButton('Заказать звонок', callback_data='request_call'))
|
||||
keyboard.add(InlineKeyboardButton('Начать разговор с оператором', callback_data='talk_operator'))
|
||||
return keyboard
|
||||
|
||||
def account_data_keyboard():
|
||||
keyboard = InlineKeyboardMarkup()
|
||||
keyboard.add(InlineKeyboardButton('Изменить ФИО', callback_data='change_name'))
|
||||
keyboard.add(InlineKeyboardButton('Изменить номер телефона', callback_data='change_phone'))
|
||||
keyboard.add(InlineKeyboardButton('Добавить адрес', callback_data='add_address'))
|
||||
keyboard.add(InlineKeyboardButton('Удалить адрес', callback_data='delete_address'))
|
||||
keyboard.add(InlineKeyboardButton('Поделиться контактом', callback_data='share_contact'))
|
||||
keyboard.add(InlineKeyboardButton('Назад', callback_data='back_to_main'))
|
||||
return keyboard
|
||||
|
||||
def order_keyboard():
|
||||
keyboard = InlineKeyboardMarkup()
|
||||
keyboard.add(InlineKeyboardButton('Добавить учетные данные', callback_data='add_account_data'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать адрес', callback_data='select_address'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать время для уборки', callback_data='select_time'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать тип уборки', callback_data='select_cleaning_type'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать способ оплаты', callback_data='select_payment_method'))
|
||||
keyboard.add(InlineKeyboardButton('Подтвердить заказ', callback_data='confirm_order'))
|
||||
keyboard.add(InlineKeyboardButton('Назад', callback_data='back_to_main'))
|
||||
return keyboard
|
||||
|
||||
# Обработчики команд
|
||||
@dp.message_handler(commands=['start'])
|
||||
async def send_welcome(message: types.Message):
|
||||
await message.answer("Добро пожаловать в BOTKlining!", reply_markup=main_menu_keyboard())
|
||||
log_action(message.from_user.id, 'start')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'account_data')
|
||||
async def process_account_data(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
await bot.send_message(callback_query.from_user.id, "Учетные данные:", reply_markup=account_data_keyboard())
|
||||
log_action(callback_query.from_user.id, 'account_data')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'make_order')
|
||||
async def process_make_order(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
await bot.send_message(callback_query.from_user.id, "Сделать заказ:", reply_markup=order_keyboard())
|
||||
log_action(callback_query.from_user.id, 'make_order')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'order_history')
|
||||
async def process_order_history(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
# Добавьте логику для просмотра истории заказов
|
||||
await bot.send_message(callback_query.from_user.id, "История заказов:")
|
||||
log_action(callback_query.from_user.id, 'order_history')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'request_call')
|
||||
async def process_request_call(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
# Добавьте логику для заказа звонка
|
||||
await bot.send_message(callback_query.from_user.id, "Заказ звонка оформлен. Ожидайте звонок в течение 30 минут.")
|
||||
log_action(callback_query.from_user.id, 'request_call')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'talk_operator')
|
||||
async def process_talk_operator(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
# Добавьте логику для начала разговора с оператором
|
||||
await bot.send_message(callback_query.from_user.id, "Разговор с оператором начат.")
|
||||
log_action(callback_query.from_user.id, 'talk_operator')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'back_to_main')
|
||||
async def process_back_to_main(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
await bot.send_message(callback_query.from_user.id, "Главное меню:", reply_markup=main_menu_keyboard())
|
||||
log_action(callback_query.from_user.id, 'back_to_main')
|
||||
|
||||
if __name__ == '__main__':
|
||||
create_tables()
|
||||
executor.start_polling(dp, skip_updates=True)
|
||||
import os
|
||||
import logging
|
||||
from aiogram import Bot, Dispatcher, types
|
||||
from aiogram.contrib.middlewares.logging import LoggingMiddleware
|
||||
from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton
|
||||
from aiogram.utils import executor
|
||||
from aiogram.dispatcher.filters import Text
|
||||
from database import create_tables
|
||||
from logger import log_action
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Загрузка переменных окружения из .env файла
|
||||
load_dotenv()
|
||||
|
||||
API_TOKEN = os.getenv('BOT_API_TOKEN')
|
||||
OPERATORS_GROUP_ID = os.getenv('OPERATORS_GROUP_ID')
|
||||
ADMIN_GROUP_ID = os.getenv('ADMIN_GROUP_ID')
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
bot = Bot(token=API_TOKEN)
|
||||
dp = Dispatcher(bot)
|
||||
dp.middleware.setup(LoggingMiddleware())
|
||||
|
||||
# Inline клавиатуры
|
||||
def main_menu_keyboard():
|
||||
keyboard = InlineKeyboardMarkup()
|
||||
keyboard.add(InlineKeyboardButton('Учетные данные', callback_data='account_data'))
|
||||
keyboard.add(InlineKeyboardButton('Сделать заказ', callback_data='make_order'))
|
||||
keyboard.add(InlineKeyboardButton('История заказов', callback_data='order_history'))
|
||||
keyboard.add(InlineKeyboardButton('Заказать звонок', callback_data='request_call'))
|
||||
keyboard.add(InlineKeyboardButton('Начать разговор с оператором', callback_data='talk_operator'))
|
||||
return keyboard
|
||||
|
||||
def account_data_keyboard():
|
||||
keyboard = InlineKeyboardMarkup()
|
||||
keyboard.add(InlineKeyboardButton('Изменить ФИО', callback_data='change_name'))
|
||||
keyboard.add(InlineKeyboardButton('Изменить номер телефона', callback_data='change_phone'))
|
||||
keyboard.add(InlineKeyboardButton('Добавить адрес', callback_data='add_address'))
|
||||
keyboard.add(InlineKeyboardButton('Удалить адрес', callback_data='delete_address'))
|
||||
keyboard.add(InlineKeyboardButton('Поделиться контактом', callback_data='share_contact'))
|
||||
keyboard.add(InlineKeyboardButton('Назад', callback_data='back_to_main'))
|
||||
return keyboard
|
||||
|
||||
def order_keyboard():
|
||||
keyboard = InlineKeyboardMarkup()
|
||||
keyboard.add(InlineKeyboardButton('Добавить учетные данные', callback_data='add_account_data'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать адрес', callback_data='select_address'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать время для уборки', callback_data='select_time'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать тип уборки', callback_data='select_cleaning_type'))
|
||||
keyboard.add(InlineKeyboardButton('Выбрать способ оплаты', callback_data='select_payment_method'))
|
||||
keyboard.add(InlineKeyboardButton('Подтвердить заказ', callback_data='confirm_order'))
|
||||
keyboard.add(InlineKeyboardButton('Назад', callback_data='back_to_main'))
|
||||
return keyboard
|
||||
|
||||
# Обработчики команд
|
||||
@dp.message_handler(commands=['start'])
|
||||
async def send_welcome(message: types.Message):
|
||||
await message.answer("Добро пожаловать в BOTKlining!", reply_markup=main_menu_keyboard())
|
||||
log_action(message.from_user.id, 'start')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'account_data')
|
||||
async def process_account_data(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
await bot.send_message(callback_query.from_user.id, "Учетные данные:", reply_markup=account_data_keyboard())
|
||||
log_action(callback_query.from_user.id, 'account_data')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'make_order')
|
||||
async def process_make_order(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
await bot.send_message(callback_query.from_user.id, "Сделать заказ:", reply_markup=order_keyboard())
|
||||
log_action(callback_query.from_user.id, 'make_order')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'order_history')
|
||||
async def process_order_history(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
# Добавьте логику для просмотра истории заказов
|
||||
await bot.send_message(callback_query.from_user.id, "История заказов:")
|
||||
log_action(callback_query.from_user.id, 'order_history')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'request_call')
|
||||
async def process_request_call(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
# Добавьте логику для заказа звонка
|
||||
await bot.send_message(callback_query.from_user.id, "Заказ звонка оформлен. Ожидайте звонок в течение 30 минут.")
|
||||
log_action(callback_query.from_user.id, 'request_call')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'talk_operator')
|
||||
async def process_talk_operator(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
# Добавьте логику для начала разговора с оператором
|
||||
await bot.send_message(callback_query.from_user.id, "Разговор с оператором начат.")
|
||||
log_action(callback_query.from_user.id, 'talk_operator')
|
||||
|
||||
@dp.callback_query_handler(lambda c: c.data == 'back_to_main')
|
||||
async def process_back_to_main(callback_query: types.CallbackQuery):
|
||||
await bot.answer_callback_query(callback_query.id)
|
||||
await bot.send_message(callback_query.from_user.id, "Главное меню:", reply_markup=main_menu_keyboard())
|
||||
log_action(callback_query.from_user.id, 'back_to_main')
|
||||
|
||||
if __name__ == '__main__':
|
||||
create_tables()
|
||||
executor.start_polling(dp, skip_updates=True)
|
||||
|
||||
Reference in New Issue
Block a user