55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
|
||
from aiogram.dispatcher import FSMContext
|
||
from aiogram.types import ReplyKeyboardMarkup, ReplyKeyboardRemove
|
||
from keyboards.default.markups import all_right_message, cancel_message, submit_markup
|
||
from aiogram.types import Message
|
||
from states import SosState
|
||
from filters import IsUser
|
||
from loader import dp, db
|
||
|
||
|
||
@dp.message_handler(commands='sos')
|
||
async def cmd_sos(message: Message):
|
||
await SosState.question.set()
|
||
await message.answer('В чем суть проблемы? Опишите как можно детальнее и администратор обязательно вам ответит.', reply_markup=ReplyKeyboardRemove())
|
||
|
||
|
||
@dp.message_handler(state=SosState.question)
|
||
async def process_question(message: Message, state: FSMContext):
|
||
async with state.proxy() as data:
|
||
data['question'] = message.text
|
||
|
||
await message.answer('Убедитесь, что все верно.', reply_markup=submit_markup())
|
||
await SosState.next()
|
||
|
||
|
||
@dp.message_handler(lambda message: message.text not in [cancel_message, all_right_message], state=SosState.submit)
|
||
async def process_price_invalid(message: Message):
|
||
await message.answer('Такого варианта не было.')
|
||
|
||
|
||
@dp.message_handler(text=cancel_message, state=SosState.submit)
|
||
async def process_cancel(message: Message, state: FSMContext):
|
||
await message.answer('Отменено!', reply_markup=ReplyKeyboardRemove())
|
||
await state.finish()
|
||
|
||
|
||
@dp.message_handler(text=all_right_message, state=SosState.submit)
|
||
async def process_submit(message: Message, state: FSMContext):
|
||
|
||
cid = message.chat.id
|
||
|
||
if db.fetchone('SELECT * FROM questions WHERE cid=?', (cid,)) == None:
|
||
|
||
async with state.proxy() as data:
|
||
db.query('INSERT INTO questions VALUES (?, ?)',
|
||
(cid, data['question']))
|
||
|
||
await message.answer('Отправлено!', reply_markup=ReplyKeyboardRemove())
|
||
|
||
else:
|
||
|
||
await message.answer('Превышен лимит на количество задаваемых вопросов.', reply_markup=ReplyKeyboardRemove())
|
||
|
||
await state.finish()
|