Spaces:
Runtime error
Runtime error
from aiogram.filters.command import Command | |
from aiogram.types import Message, CallbackQuery | |
from aiogram import F, Router, Bot | |
from aiogram.fsm.context import FSMContext | |
import app.keyboards.user_keyboards as kb | |
import app.database.requests as rq | |
from app.states import Register, Other | |
user_router = Router() | |
bot = Bot(token='5569983238:AAFo8J083zUWOk879M7YMYfhAreeiLovGcE') | |
async def cmd_start(message: Message): | |
await rq.set_user(message.from_user.id) | |
await message.answer('Добро пожаловать! Я - телеграм-бот Нины Смирновой, и моя основная задача - взаимодействие с ' | |
'Вами: я могу предоставить Вам информацию о наших услугах и связать Вас с Ниной, а также ' | |
'показать Вам интересные и полезные материалы от Нины. Еще я могу записать Ваш отзыв, ' | |
'если Вы уже воспользовались нашими услугами! А еще (только это секрет) у меня есть очень' | |
'интересные тесты, которые позволят Вам лучше понять себя и Вашего ребенка! \n\n ' | |
'Чем я могу Вам помочь?', | |
reply_markup=kb.user_main) | |
async def cmd_help(message: Message): | |
await message.answer('Это кнопка помощи') | |
async def get_catalog(message: Message): | |
await message.answer('Спасибо за интерес! Вот наш перечень услуг. ' | |
'Пожалуйста, выберите самую подходящую и нажмите на соответствующую кнопку, ' | |
'чтобы узнать о ней подробнее:', reply_markup=await kb.user_keyboard_catalog()) | |
async def service_info(callback: CallbackQuery,state: FSMContext): | |
await callback.answer('') | |
service_info = await rq.get_service_info(callback.data.split('_')[1]) | |
service_string = f"Вот информация по выбранной Вами услуге: \n" \ | |
f"Название: {service_info.service_name} \n" \ | |
f"Описание: {service_info.service_description} \n" \ | |
f"Цена: {service_info.service_price}. \n\n" \ | |
f"Хотите ли Вы воспользоваться данной услугой?" | |
await callback.answer('') | |
await state.set_state(Other.user_pre_buy_service) | |
await state.update_data(user_id=callback.from_user.id, | |
user_username=callback.from_user.username, | |
service=service_info.service_name) | |
await callback.message.answer(service_string, reply_markup=kb.service_confirm) | |
async def admin_prompt(message: Message, state: FSMContext): | |
await state.set_state(Other.user_buy_service) | |
await message.answer('Напишите Нине и изложите Вашу проблему - это поможет ей лучше понять Ваш конкретный случай' | |
' и сделать Ваш разговор более предметным!') | |
async def admin_connect(message: Message, state: FSMContext): | |
data = await state.get_data() | |
await bot.send_message(chat_id=1658604792, | |
text=f'Здравствуйте! Поступил новый заказ на услугу {data["service"]} от пользователя' | |
f' @{data["user_username"]}') | |
await message.send_copy(1658604792) | |
await message.answer('Спасибо за обращение! Скоро Нина свяжется с Вами в личных сообщениях для обсуждения ' | |
'подробностей Вашего заказа!') | |
await state.clear() | |
await message.answer('Вы можете вернуться в меню и посмотреть, какие еще услуги мы предлагаем! Еще мы предлагаем ' | |
'зарегистрироваться, чтобы получить возможность не пропускать всё самое важное, что происходит ' | |
'в канале. Также регистрация позволит Вам вступить в СЕКРЕТНЫЙ КЛУБ пользователей, которые' | |
' будут иметь доступ к специальным акциям и ВКУСНЫМ ЦЕНАМ для своих!', | |
reply_markup=kb.user_back) | |
async def np_service_return_to_menu(message: Message, state: FSMContext): | |
await state.clear() | |
await message.answer('Чем я могу Вам помочь?', reply_markup=kb.user_main) | |
async def register(callback: CallbackQuery, state: FSMContext): | |
await state.set_state(Register.user_register_name) | |
await callback.message.answer('Как к Вам обращаться?') | |
async def register(callback: CallbackQuery): | |
await callback.answer("Возвращаемся в меню") | |
await callback.message.answer("Чем я могу Вам помочь?", reply_markup=kb.user_main) | |
async def register_name(message: Message, state: FSMContext): | |
await state.update_data(name=message.text) | |
await state.set_state(Register.user_register_contact) | |
await message.answer('Оставьте контакт, с которого Вам будет удобнее всего общаться с нами') | |
async def register_contact(message: Message, state: FSMContext): | |
await state.update_data(contact=message.text) | |
await state.set_state(Register.user_register_subscribe) | |
await message.answer('Хотите ли Вы получать от нас уведомления о новинках, акциях и даже ' | |
'СЕКРЕТНЫХ РАСПРОДАЖАХ ДЛЯ СВОИХ?', reply_markup=kb.yes_no_keyboard) | |
async def register_subscribe(message: Message, state: FSMContext): | |
await state.update_data(include_in_broadcast=message.text) | |
if message.text == 'Да': | |
await message.answer('Спасибо за регистрацию! Добро пожаловать в наш тайный клуб клиентов!') | |
elif message.text == 'Нет': | |
await message.answer('Спасибо за регистрацию! Если Вы измените свое решение, Вы всегда можете подписаться ' | |
'на наши секретные материалы, воспользовавшись ботом!') | |
data = await state.get_data() | |
await state.set_state(Register.user_register_check) | |
await message.answer(f'Давайте проверим еще раз:' | |
f'\n - Ваше имя - {data["name"]},' | |
f'\n - Ваш контакт - {data["contact"]}, ' | |
f'\n - Подписаны ли Вы на секретную рассылку: {data["include_in_broadcast"]} ' | |
f'\n\n Всё верно?', reply_markup=kb.yes_no_keyboard) | |
async def register_check(message: Message, state: FSMContext): | |
if message.text == 'Да': | |
data = await state.get_data() | |
await rq.user_register(message.from_user.id, data["name"], data["contact"], data["include_in_broadcast"]) | |
await message.answer('Ура! Спасибо, что Вы с нами! Хотите ли Вы сделать что-то еще?', reply_markup=kb.user_main) | |
await state.clear() | |
if message.text == 'Нет': | |
await state.set_state(Register.user_register_correct) | |
await message.answer('Упс :( Что Вы хотите исправить?', reply_markup=kb.register_correct_keyboard) | |
async def choose_the_correction(message: Message, state: FSMContext): | |
if message.text == 'Имя': | |
await state.set_state(Register.user_register_name) | |
await message.answer('Как к Вам обращаться?') | |
elif message.text == 'Контакт': | |
await state.set_state(Register.user_register_contact) | |
await message.answer('Оставьте контакт, с которого Вам будет удобнее всего общаться с нами') | |
elif message.text == 'Статус подписки на рассылку': | |
await state.set_state(Register.user_register_subscribe) | |
await message.answer('Хотите ли Вы получать от нас уведомления о новинках, акциях и даже ' | |
'СЕКРЕТНЫХ РАСПРОДАЖАХ ДЛЯ СВОИХ?', reply_markup=kb.yes_no_keyboard) | |
async def pre_get_back_to_admin(message: Message, state: FSMContext): | |
await state.set_state(Other.user_contact_admin) | |
await message.answer('Введите Ваше сообщение - и я отправлю его Нине!') | |
async def get_back_to_admin(message: Message, state: FSMContext): | |
await bot.send_message(chat_id=1658604792, | |
text=f'Здравствуйте! Вам поступило сообщение от пользователя' | |
f' @{message.from_user.username}:') | |
await message.send_copy(1658604792) | |
await message.answer('Спасибо за обращение! Нина получила Ваше сообщение и ответит Вам, как только сможет!', | |
reply_markup=kb.user_back_wo_reg) | |