mirror of
https://github.com/civsocit/olgram.git
synced 2025-12-17 05:26:18 +00:00
promo first iteration
This commit is contained in:
61
olgram/commands/promo.py
Normal file
61
olgram/commands/promo.py
Normal file
@@ -0,0 +1,61 @@
|
||||
"""
|
||||
Здесь промокоды
|
||||
"""
|
||||
|
||||
|
||||
from aiogram import types
|
||||
from aiogram.dispatcher import FSMContext
|
||||
from olgram.models import models
|
||||
from uuid import UUID
|
||||
|
||||
from olgram.router import dp
|
||||
from olgram.settings import OlgramSettings
|
||||
from locales.locale import _
|
||||
|
||||
|
||||
@dp.message_handler(commands=["newpromo"], state="*")
|
||||
async def new_promo(message: types.Message, state: FSMContext):
|
||||
"""
|
||||
Команда /newpromo
|
||||
"""
|
||||
|
||||
if message.chat.id != OlgramSettings.supervisor_id():
|
||||
await message.answer(_("Недостаточно прав"))
|
||||
return
|
||||
|
||||
promo = await models.Promo()
|
||||
await message.answer(_("Новый промокод\n```{0}```").format(promo.code), parse_mode="Markdown")
|
||||
|
||||
await promo.save()
|
||||
|
||||
|
||||
@dp.message_handler(commands=["setpromo"], state="*")
|
||||
async def set_promo(message: types.Message, state: FSMContext):
|
||||
"""
|
||||
Команда /setpromo
|
||||
"""
|
||||
|
||||
arg = message.get_args()
|
||||
if not arg:
|
||||
return await message.answer(_("Укажите аргумент: промокод. Например: <pre>/set_promo my-promo-code</pre>"),
|
||||
parse_mode="HTML")
|
||||
|
||||
arg = arg.strip()
|
||||
|
||||
try:
|
||||
UUID(arg)
|
||||
except ValueError:
|
||||
return await message.answer(_("Промокод не найден"))
|
||||
|
||||
promo = await models.Promo.get_or_none(code=arg)
|
||||
if not promo:
|
||||
return await message.answer(_("Промокод не найден"))
|
||||
|
||||
if promo.owner:
|
||||
return await message.answer(_("Промокод уже использован"))
|
||||
|
||||
user, created = await models.User.get_or_create(telegram_id=message.from_user.id)
|
||||
promo.owner = user
|
||||
await promo.save(update_fields=["owner_id"])
|
||||
|
||||
await message.answer(_("Промокод активирован! Спасибо 🙌"))
|
||||
Reference in New Issue
Block a user