Skip to content

Commit c193d29

Browse files
committed
Add cancel option to all two-step actions
1 parent cff455b commit c193d29

File tree

5 files changed

+34
-7
lines changed

5 files changed

+34
-7
lines changed

src/entities/constants.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,21 @@
1515
"used-link": "Ссылка уже использована",
1616
"ok-link": "Количество сертификатов у вас: {%COUNT%}",
1717
"create-link": "➕ Создать новую ссылку",
18-
"input-count": "Отправьте одно число: количество сертификатов",
18+
"input-count": "Отправьте одно число: количество сертификатов или \
19+
/cancel, чтобы отменить",
1920
"link-created": "Вот ваша ссылка (нажмите, чтобы скопировать): \
2021
<code>{%LINK%}</code>",
2122
"unknown-message": "🥲 Я вас не понял\n/start - перезапустить бота",
2223
"create-cert": "📄 Выпустить новый сертификат",
2324
"input-name": "Напишите имя, на которое нужно выпустить сертификат. \
24-
Вы можете написать в столбик несколько имен",
25+
Вы можете написать в столбик несколько имен. /cancel, чтобы отменить",
2526
"not-enough-count": "Вам не выдано достаточно сертификатов, чтобы \
2627
выписать их на каждого из этих людей",
2728
"certs-ready": "Все сертификаты сгенерированы успешно",
2829
"error": "🥲 Произошла непредвиденная ошибка. Мы уже знаем о проблеме \
2930
и решаем ее",
3031
"check-cert": "❓ Проверить сертификат",
31-
"input-cert": "Отправьте номер сертификата",
32+
"input-cert": "Отправьте номер сертификата. /cancel, чтобы отменить",
3233
"no-cert": "Сертификата с таким номером не существует.",
3334
"used-cert": "Этот сертификат уже был использован.",
3435
"ok-cert": "✅ Сертификат был создан на имя {%NAME%} и еще не был \
@@ -41,5 +42,9 @@
4142
"check-count": "🧮 Проверить количество сертификатов",
4243
"admin-count": "Вы являетесь администратором и можете создавать \
4344
сколько угодно сертификатов",
44-
"user-count": "У вас осталось сертификатов: {%COUNT%}"
45+
"user-count": "У вас осталось сертификатов: {%COUNT%}",
46+
"cancel": "❌ Отмена",
47+
"create-link-cancelled": '👌 Создание ссылки отменено',
48+
"create-cert-cancelled": "👌 Создание сертификата отменено",
49+
"check-cert-cancelled": "👌 Проверка сертификата отменена"
4550
}

src/models/link.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from peewee import TextField, IntegerField, BooleanField
22

3-
from entities import BOT_NAME
3+
from entities.constants import BOT_NAME
44
from .db import BaseModel, db
55
from .utils import str_uuid
66

src/routers/check_cert.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@ async def check_start(message: Message, state: FSMContext):
1919
reply_markup=ReplyKeyboardRemove())
2020

2121

22+
@router.message(StateFilter(States.TypingCert), Command("cancel"))
23+
async def cancel(message: Message, state: FSMContext, user: User):
24+
await state.set_state(None)
25+
await message.answer(TEXT['check-cert-cancelled'],
26+
reply_markup=get_keyboard(user))
27+
28+
2229
@router.message(StateFilter(States.TypingCert), F.chat.id.in_(ADMINS))
2330
async def check_cert(message: Message, state: FSMContext, user: User):
2431
await state.set_state(None)

src/routers/create_cert.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,19 @@
1313
@router.message(StateFilter(None), F.text == TEXT['create-cert'])
1414
async def open_create_cert(message: Message, state: FSMContext):
1515
await state.set_state(States.TypingName)
16+
1617
await message.answer(TEXT['input-name'],
1718
reply_markup=ReplyKeyboardRemove())
1819

1920

21+
@router.message(StateFilter(States.TypingName), Command("cancel"))
22+
async def cancel(message: Message, state: FSMContext, user: User):
23+
await state.set_state(None)
24+
25+
await message.answer(TEXT['create-cert-cancelled'],
26+
reply_markup=get_keyboard(user))
27+
28+
2029
@router.message(StateFilter(States.TypingName))
2130
async def create_cert(message: Message, user: User, state: FSMContext):
2231
names = message.text.split("\n")

src/routers/link.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from aiogram import Router, F
22
from aiogram.filters import Command, StateFilter
3-
from aiogram.types import Message
3+
from aiogram.types import Message, ReplyKeyboardRemove
44
from aiogram.fsm.context import FSMContext
5-
from aiogram.types import ReplyKeyboardRemove
65

76
from entities import ADMINS, TEXT, States, get_keyboard
87
from models import User, Link
@@ -21,6 +20,13 @@ async def create_link(message: Message, state: FSMContext):
2120
reply_markup=ReplyKeyboardRemove())
2221

2322

23+
@router.message(StateFilter(States.TypingNumber), Command("cancel"))
24+
async def cancel(message: Message, state: FSMContext, user: User):
25+
await state.set_state(None)
26+
await message.answer(TEXT['create-link-cancelled'],
27+
reply_markup=get_keyboard(user))
28+
29+
2430
@router.message(StateFilter(States.TypingNumber), F.chat.id.in_(ADMINS))
2531
async def get_number(message: Message, user: User, state: FSMContext):
2632
if not message.text.isnumeric():

0 commit comments

Comments
 (0)