Compare commits

..

3 Commits

Author SHA1 Message Date
qweeck 354ebe9abd Merge remote-tracking branch 'origin/master' 2024-03-01 21:39:23 +11:00
qweeck 37d8c5e356 Personal data agreement checking 2024-03-01 21:37:08 +11:00
qweeck c3e115ca93 add Dockerfile 2024-03-01 20:19:30 +11:00
1 changed files with 26 additions and 13 deletions

25
main.py
View File

@ -19,11 +19,12 @@ from aiogram.dispatcher.filters import Command, Text
from io import BytesIO from io import BytesIO
from aiogram import Bot, Dispatcher, types from aiogram import Bot, Dispatcher, types
from aiogram.dispatcher.filters.state import StatesGroup, State from aiogram.dispatcher.filters.state import StatesGroup, State
from aiogram.types import InputFile, ReplyKeyboardMarkup, KeyboardButton from aiogram.types import InputFile, ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardButton, InlineKeyboardMarkup
from aiogram import executor from aiogram import executor
from docx import Document from docx import Document
from docx.shared import Pt from docx.shared import Pt
from config import API_TOKEN from config import API_TOKEN
storage = MemoryStorage() storage = MemoryStorage()
@ -31,6 +32,7 @@ bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot, storage=storage) dp = Dispatcher(bot, storage=storage)
# ------------------------------------------------------------------- # -------------------------------------------------------------------
# Классы для каждого документа, относительно вводимого в него текста. # Классы для каждого документа, относительно вводимого в него текста.
# ------------------------------------------------------------------- # -------------------------------------------------------------------
@ -74,19 +76,30 @@ async def process_start_command(message: types.Message):
# ------------------------------------------------------ # ------------------------------------------------------
@dp.message_handler(Text(equals='Создать заявление и договор на практику')) @dp.message_handler(Text(equals='Создать заявление и договор на практику'))
async def process_create_document(message: types.Message): async def process_personal_data(message: types.Message):
await message.answer('❗Согласие на обработку персональных данных❗\n\nВы согласны на '
'предоставление своих персональных данных?', reply_markup=InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton('💹Да💹', callback_data='PDyes')],[InlineKeyboardButton('❌Нет❌', callback_data='PDno')]
]))
@dp.callback_query_handler(lambda c: c.data.startswith('PD'))
async def process_create_document(call: types.CallbackQuery):
if call.data == 'PDyes':
markup = ReplyKeyboardMarkup(resize_keyboard=True, keyboard=[ markup = ReplyKeyboardMarkup(resize_keyboard=True, keyboard=[
[KeyboardButton('Отмена')] [KeyboardButton('Отмена')]
]) ])
# Запускаем состояние # Запускаем состояние
await DocFormStates.group.set() await DocFormStates.group.set()
await message.answer('❗Обращаю внимание❗\nПеред отправкой проверяйте корректность введённых данных.\n\n' await call.message.answer('❗Обращаю внимание❗\nПеред отправкой проверяйте корректность введённых данных.\n\n'
'Для прекращения заполнения документов нажмите кнопку "Отмена" снизу. Можете ' 'Для прекращения заполнения документов нажмите кнопку "Отмена" снизу. Можете '
'использовать это в качестве меры предотвращения опечатки. \n\nВ любом случае готовый ' 'использовать это в качестве меры предотвращения опечатки. \n\nВ любом случае готовый '
'документ тоже можно отредактировать.', reply_markup=markup) 'документ тоже можно отредактировать.', reply_markup=markup)
await message.answer("<b>Сейчас вы заполняете заявление на закрепление места в практике!</b>", parse_mode='HTML') await call.message.answer("<b>Сейчас вы заполняете заявление на закрепление места в практике!</b>", parse_mode='HTML')
await message.answer("Введите номер вашей группы, например: <b>БИН-23-1</b>", parse_mode='HTML') await call.message.answer("Введите номер вашей группы, например: <b>БИН-23-1</b>", parse_mode='HTML')
else:
await call.message.answer('Вы не согласны на обработку персональных данных, заполнение невозможно.')
@dp.message_handler(lambda message: 'отмена' in message.text.lower(), state="*") @dp.message_handler(lambda message: 'отмена' in message.text.lower(), state="*")
async def cancel_handler(message: types.Message, state: FSMContext): async def cancel_handler(message: types.Message, state: FSMContext):
current_state = await state.get_state() current_state = await state.get_state()