Improved sponsorship fill
This commit is contained in:
parent
fe1d44d44d
commit
3e22ad1895
@ -96,12 +96,15 @@
|
|||||||
"sponsor_got": "Отримано форму на спонсорство від `{0}`\n\nІм'я тг: `{1}`\nЮзернейм: @{2}\n\n**Дані форми:**\n{3}",
|
"sponsor_got": "Отримано форму на спонсорство від `{0}`\n\nІм'я тг: `{1}`\nЮзернейм: @{2}\n\n**Дані форми:**\n{3}",
|
||||||
"sponsor_rejected_by": "❌ **Підписку відхилено**\nАдмін **{0}** переглянув та відхилив форму `{1}`.",
|
"sponsor_rejected_by": "❌ **Підписку відхилено**\nАдмін **{0}** переглянув та відхилив форму `{1}`.",
|
||||||
"sponsor_rejected": "Ой лишенько! Твою форму переглянули, однак не підтвердили її. Можливо, щось не так з датами, або ж бажана роль не може бути надана.\n\nТи можеш спробувати повторно заповнити форму командою /sponsorship",
|
"sponsor_rejected": "Ой лишенько! Твою форму переглянули, однак не підтвердили її. Можливо, щось не так з датами, або ж бажана роль не може бути надана.\n\nТи можеш спробувати повторно заповнити форму командою /sponsorship",
|
||||||
|
"sponsor_resubmit_invalid_option": "Правильна опція! Спробуй /sponsorship ще раз, але користуйся клавіатурою щоб обрати з можливих варіантів.",
|
||||||
|
"sponsor_resubmit": "Здається, ти маєш активну підписку на **{0}**. Хочеш подовжити її чи заповнити нову?",
|
||||||
"sponsor1_invalid": "Будь ласка, введіть ім'я не довше за 240 символів",
|
"sponsor1_invalid": "Будь ласка, введіть ім'я не довше за 240 символів",
|
||||||
"sponsor1": "На яку саме дівчину платна підписка?",
|
"sponsor1": "На яку саме дівчину платна підписка?",
|
||||||
"sponsor2_invalid": "Будь ласка, введи дату формату `ДД.ММ.РРРР`",
|
"sponsor2_invalid": "Будь ласка, введи дату формату `ДД.ММ.РРРР`",
|
||||||
"sponsor2_past": "Вказана дата знаходиться в минулому. Будь ласка, вкажіть правильний термін дії підписки",
|
"sponsor2_past": "Вказана дата знаходиться в минулому. Будь ласка, вкажіть правильний термін дії підписки",
|
||||||
"sponsor2": "До якої дати (`ДД.ММ.РРРР`) підписка?",
|
"sponsor2": "До якої дати (`ДД.ММ.РРРР`) підписка?",
|
||||||
"sponsor3": "Будь ласка, надішли одне фото для підтвердження дійсності підписки\n\nℹ️ **Підказка**\nПрочитай як правильно скрінити легітимне підтвердження підписки: https://telegra.ph/Pіdpiska-na-holo-dіvchinu-01-02",
|
"sponsor3": "Будь ласка, надішли одне фото для підтвердження дійсності підписки\n\nℹ️ **Підказка**\nПрочитай як правильно скрінити легітимне підтвердження підписки: https://telegra.ph/Pіdpiska-na-holo-dіvchinu-01-02",
|
||||||
|
"sponsor4_resubmit": "Майже закінчили. Стара роль **{0}** може бути використана і цього разу, а може бути змінена. Будь ласка, обери те, що тобі підходить.\n\n⚠️ **Увага!**\nПісля обирання варіанту або введення нової назви ролі, заявку буде надіслано автоматично. Для відміни дії зараз ще можна використовувати /cancel",
|
||||||
"sponsor4": "Яку роль ти бажаєш отримати?\n\nℹ️ **Підказка**\nНазва ролі повинна бути якось пов'язана зі вказаною дівчиною, не повинна порушувати правила спільноти а також має бути не довше за 16 символів (обмеження Telegram).",
|
"sponsor4": "Яку роль ти бажаєш отримати?\n\nℹ️ **Підказка**\nНазва ролі повинна бути якось пов'язана зі вказаною дівчиною, не повинна порушувати правила спільноти а також має бути не довше за 16 символів (обмеження Telegram).",
|
||||||
"sponsorship_application_empty": "❌ **Дія неможлива**\nУ тебе немає заповненої та схваленої анкети. Заповни таку за допомогою /reapply та спробуй ще раз після її підтвердження.",
|
"sponsorship_application_empty": "❌ **Дія неможлива**\nУ тебе немає заповненої та схваленої анкети. Заповни таку за допомогою /reapply та спробуй ще раз після її підтвердження.",
|
||||||
"sponsorship_apply": "ℹ️ Оформіть платну підписку на когось з Холо, заповніть форму та отримайте особливу роль в якості винагороди!",
|
"sponsorship_apply": "ℹ️ Оформіть платну підписку на когось з Холо, заповніть форму та отримайте особливу роль в якості винагороди!",
|
||||||
@ -195,6 +198,22 @@
|
|||||||
[
|
[
|
||||||
"Інше"
|
"Інше"
|
||||||
]
|
]
|
||||||
|
],
|
||||||
|
"sponsorship_restore": [
|
||||||
|
[
|
||||||
|
"Подовжити стару"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Заповнити нову підписку"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"sponsorship_restore_label": [
|
||||||
|
[
|
||||||
|
"Залишити стару"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Ввести замість неї нову"
|
||||||
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"force_reply": {
|
"force_reply": {
|
||||||
|
@ -13,8 +13,9 @@ from pyrogram.types import (
|
|||||||
from pyrogram.client import Client
|
from pyrogram.client import Client
|
||||||
from classes.holo_user import HoloUser
|
from classes.holo_user import HoloUser
|
||||||
from modules import custom_filters
|
from modules import custom_filters
|
||||||
from modules.utils import locale, should_quote
|
from modules.handlers.confirmation import confirm_yes
|
||||||
from modules.database import col_sponsorships
|
from modules.utils import all_locales, locale, should_quote
|
||||||
|
from modules.database import col_sponsorships, col_tmp
|
||||||
from convopyro import listen_message
|
from convopyro import listen_message
|
||||||
|
|
||||||
|
|
||||||
@ -74,9 +75,11 @@ async def cmd_sponsorship(app: Client, msg: Message):
|
|||||||
return
|
return
|
||||||
|
|
||||||
await msg.reply_text(
|
await msg.reply_text(
|
||||||
f'You have an active membership for **{existent["sponsorship"]["streamer"]}**. Wanna resubmit it once more?',
|
locale("sponsor_resubmit", "message", locale=msg.from_user).format(
|
||||||
|
existent["sponsorship"]["streamer"]
|
||||||
|
),
|
||||||
reply_markup=ReplyKeyboardMarkup(
|
reply_markup=ReplyKeyboardMarkup(
|
||||||
[["Yep, use old data"], ["Nope, refill it once more"]],
|
locale("sponsorship_restore", "keyboard", locale=msg.from_user),
|
||||||
resize_keyboard=True,
|
resize_keyboard=True,
|
||||||
one_time_keyboard=True,
|
one_time_keyboard=True,
|
||||||
),
|
),
|
||||||
@ -89,10 +92,26 @@ async def cmd_sponsorship(app: Client, msg: Message):
|
|||||||
|
|
||||||
input_streamer = existent["sponsorship"]["streamer"]
|
input_streamer = existent["sponsorship"]["streamer"]
|
||||||
|
|
||||||
if answer_decision.text.lower() == "yep, use old data":
|
values_keep = []
|
||||||
|
for pattern in all_locales("sponsorship_restore", "keyboard"):
|
||||||
|
values_keep.append(pattern[0][0].lower())
|
||||||
|
|
||||||
|
values_new = []
|
||||||
|
for pattern in all_locales("sponsorship_restore", "keyboard"):
|
||||||
|
values_new.append(pattern[1][0].lower())
|
||||||
|
|
||||||
|
if answer_decision.text.lower() in values_keep:
|
||||||
await answer_decision.reply_text(
|
await answer_decision.reply_text(
|
||||||
"Okay, reusing the old data.\n\nUntil when is your sub?\n\nEnter the date as DD.MM.YYYY",
|
locale("sponsor2", "message", locale=msg.from_user),
|
||||||
reply_markup=ForceReply(placeholder="Expiry date as DD.MM.YYYY"),
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale(
|
||||||
|
f"sponsor2",
|
||||||
|
"force_reply",
|
||||||
|
locale=msg.from_user,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
)
|
)
|
||||||
while True:
|
while True:
|
||||||
answer_date = await listen_message(app, msg.chat.id)
|
answer_date = await listen_message(app, msg.chat.id)
|
||||||
@ -102,17 +121,44 @@ async def cmd_sponsorship(app: Client, msg: Message):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
input_dt = datetime.strptime(answer_date.text, "%d.%m.%Y")
|
input_dt = datetime.strptime(answer_date.text, "%d.%m.%Y")
|
||||||
|
if datetime.now() >= input_dt:
|
||||||
|
await msg.reply_text(
|
||||||
|
locale("sponsor2_past", "message", locale=msg.from_user),
|
||||||
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale("sponsor2", "force_reply", locale=msg.from_user)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
continue
|
||||||
break
|
break
|
||||||
except ValueError:
|
except ValueError:
|
||||||
await answer_date.reply_text(
|
await answer_date.reply_text(
|
||||||
"Invalid date! Provide as DD.MM.YYYY",
|
locale(f"sponsor2_invalid", "message", locale=msg.from_user),
|
||||||
reply_markup=ForceReply(placeholder="Expiry date as DD.MM.YYYY"),
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale(
|
||||||
|
f"sponsor2",
|
||||||
|
"force_reply",
|
||||||
|
locale=msg.from_user,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
await answer_date.reply_text(
|
||||||
|
locale("sponsor3", "message", locale=msg.from_user),
|
||||||
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale(
|
||||||
|
f"sponsor3",
|
||||||
|
"force_reply",
|
||||||
|
locale=msg.from_user,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
|
)
|
||||||
while True:
|
while True:
|
||||||
await answer_date.reply_text(
|
|
||||||
"Alright. Now provide your proof **as a single screenshot**"
|
|
||||||
)
|
|
||||||
answer_proof = await listen_message(app, msg.chat.id)
|
answer_proof = await listen_message(app, msg.chat.id)
|
||||||
|
|
||||||
if is_none_or_cancel(answer_proof):
|
if is_none_or_cancel(answer_proof):
|
||||||
@ -120,15 +166,26 @@ async def cmd_sponsorship(app: Client, msg: Message):
|
|||||||
|
|
||||||
if answer_proof.photo is None:
|
if answer_proof.photo is None:
|
||||||
await answer_proof.reply_text(
|
await answer_proof.reply_text(
|
||||||
"Please, provide proof **as a single screenshot**"
|
locale("sponsor3", "message", locale=msg.from_user),
|
||||||
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale(
|
||||||
|
f"sponsor3",
|
||||||
|
"force_reply",
|
||||||
|
locale=msg.from_user,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
input_proof = answer_proof.photo.file_id
|
input_proof = answer_proof.photo.file_id
|
||||||
break
|
break
|
||||||
await msg.reply_text(
|
await msg.reply_text(
|
||||||
f'Almost done. Do you want to keep the label **{existent["sponsorship"]["label"]}** or you want to change it?',
|
locale("sponsor4_resubmit", "message", locale=msg.from_user).format(
|
||||||
|
existent["sponsorship"]["label"]
|
||||||
|
),
|
||||||
reply_markup=ReplyKeyboardMarkup(
|
reply_markup=ReplyKeyboardMarkup(
|
||||||
[["Keep the old one"], ["Set a new one instead"]],
|
locale("sponsorship_restore_label", "keyboard", locale=msg.from_user),
|
||||||
resize_keyboard=True,
|
resize_keyboard=True,
|
||||||
one_time_keyboard=True,
|
one_time_keyboard=True,
|
||||||
),
|
),
|
||||||
@ -144,19 +201,39 @@ async def cmd_sponsorship(app: Client, msg: Message):
|
|||||||
await answer_label_decision.reply_text(
|
await answer_label_decision.reply_text(
|
||||||
"Please, choose a valid option.",
|
"Please, choose a valid option.",
|
||||||
reply_markup=ReplyKeyboardMarkup(
|
reply_markup=ReplyKeyboardMarkup(
|
||||||
[["Keep the old one"], ["Set a new one instead"]],
|
locale(
|
||||||
|
"sponsorship_restore_label",
|
||||||
|
"keyboard",
|
||||||
|
locale=msg.from_user,
|
||||||
|
),
|
||||||
resize_keyboard=True,
|
resize_keyboard=True,
|
||||||
one_time_keyboard=True,
|
one_time_keyboard=True,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if answer_label_decision.text.lower() == "keep the old one":
|
values_keep = []
|
||||||
|
for pattern in all_locales("sponsorship_restore_label", "keyboard"):
|
||||||
|
values_keep.append(pattern[0][0].lower())
|
||||||
|
|
||||||
|
values_new = []
|
||||||
|
for pattern in all_locales("sponsorship_restore_label", "keyboard"):
|
||||||
|
values_new.append(pattern[1][0].lower())
|
||||||
|
|
||||||
|
if answer_label_decision.text.lower() in values_keep:
|
||||||
input_label = existent["sponsorship"]["label"]
|
input_label = existent["sponsorship"]["label"]
|
||||||
elif answer_label_decision.text.lower() == "set a new one instead":
|
elif answer_label_decision.text.lower() in values_new:
|
||||||
await answer_label_decision.reply_text(
|
await answer_label_decision.reply_text(
|
||||||
"Okay. Please provide a new label up to 16 characters long",
|
locale("sponsor4", "message", locale=msg.from_user),
|
||||||
reply_markup=ForceReply(placeholder="New label"),
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale(
|
||||||
|
f"sponsor4",
|
||||||
|
"force_reply",
|
||||||
|
locale=msg.from_user,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
)
|
)
|
||||||
while True:
|
while True:
|
||||||
answer_label = await listen_message(app, msg.chat.id)
|
answer_label = await listen_message(app, msg.chat.id)
|
||||||
@ -166,27 +243,61 @@ async def cmd_sponsorship(app: Client, msg: Message):
|
|||||||
|
|
||||||
if answer_label.text is None:
|
if answer_label.text is None:
|
||||||
await answer_label.reply_text(
|
await answer_label.reply_text(
|
||||||
"Please provide valid label",
|
locale("label_too_long", "message", locale=msg.from_user),
|
||||||
reply_markup=ForceReply(placeholder="New label"),
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale(
|
||||||
|
f"sponsor4",
|
||||||
|
"force_reply",
|
||||||
|
locale=msg.from_user,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
elif len(answer_label.text) > 16:
|
elif len(answer_label.text) > 16:
|
||||||
await answer_label.reply_text(
|
await answer_label.reply_text(
|
||||||
"Please provide a label not longer than 16 characters long",
|
locale("label_too_long", "message", locale=msg.from_user),
|
||||||
reply_markup=ForceReply(placeholder="New label"),
|
reply_markup=ForceReply(
|
||||||
|
placeholder=str(
|
||||||
|
locale(
|
||||||
|
f"sponsor4",
|
||||||
|
"force_reply",
|
||||||
|
locale=msg.from_user,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
),
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
input_label = answer_label.text
|
input_label = answer_label.text
|
||||||
break
|
break
|
||||||
|
|
||||||
await msg.reply_text(
|
col_tmp.find_one_and_delete(
|
||||||
f"So we did it for streamer **{input_streamer}**, til {input_dt.strftime('%d.%m.%Y')}, proofed by `{input_proof}` and labeled as **{input_label}**.",
|
{"user": msg.from_user.id, "type": "sponsorship"}
|
||||||
reply_markup=ReplyKeyboardRemove(),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
col_tmp.insert_one(
|
||||||
|
{
|
||||||
|
"user": msg.from_user.id,
|
||||||
|
"type": "sponsorship",
|
||||||
|
"complete": True,
|
||||||
|
"sent": False,
|
||||||
|
"state": "fill",
|
||||||
|
"stage": 4,
|
||||||
|
"sponsorship": {
|
||||||
|
"streamer": input_streamer,
|
||||||
|
"expires": input_dt,
|
||||||
|
"proof": input_proof,
|
||||||
|
"label": input_label,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
await confirm_yes(app, msg, kind="sponsorship")
|
||||||
return
|
return
|
||||||
|
|
||||||
elif answer_decision.text.lower() == "nope, refill it once more":
|
elif answer_decision.text.lower() in values_new:
|
||||||
await msg.reply_text(
|
await msg.reply_text(
|
||||||
locale("sponsorship_apply", "message", locale=msg.from_user),
|
locale("sponsorship_apply", "message", locale=msg.from_user),
|
||||||
reply_markup=InlineKeyboardMarkup(
|
reply_markup=InlineKeyboardMarkup(
|
||||||
@ -206,7 +317,8 @@ async def cmd_sponsorship(app: Client, msg: Message):
|
|||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
await answer_decision.reply_text(
|
await answer_decision.reply_text(
|
||||||
"Invalid option!", reply_markup=ReplyKeyboardRemove()
|
locale("sponsor_resubmit_invalid_option", "message", locale=msg.from_user),
|
||||||
|
reply_markup=ReplyKeyboardRemove(),
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
# else:
|
# else:
|
||||||
|
Reference in New Issue
Block a user