mirror of
https://github.com/civsocit/olgram.git
synced 2023-07-22 01:29:12 +03:00
notification, first iteration
This commit is contained in:
parent
80f52d0713
commit
15083fed8d
1
main.py
1
main.py
@ -13,6 +13,7 @@ import olgram.commands.menu # noqa: F401
|
||||
import olgram.commands.bot_actions # noqa: F401
|
||||
import olgram.commands.info # noqa: F401
|
||||
import olgram.commands.promo # noqa: F401
|
||||
import olgram.commands.admin # noqa: F401
|
||||
from locales.locale import _
|
||||
|
||||
from server.server import main as server_main
|
||||
|
81
olgram/commands/admin.py
Normal file
81
olgram/commands/admin.py
Normal file
@ -0,0 +1,81 @@
|
||||
"""
|
||||
Здесь некоторые команды администратора
|
||||
"""
|
||||
|
||||
from aiogram import types
|
||||
from aiogram.dispatcher import FSMContext
|
||||
from olgram.models import models
|
||||
|
||||
from olgram.router import dp
|
||||
from olgram.settings import OlgramSettings
|
||||
from locales.locale import _
|
||||
|
||||
|
||||
@dp.message_handler(commands=["notify-owner"], state="*")
|
||||
async def notify(message: types.Message, state: FSMContext):
|
||||
"""
|
||||
Команда /notify-owner
|
||||
"""
|
||||
|
||||
if message.chat.id != OlgramSettings.supervisor_id():
|
||||
await message.answer(_("Недостаточно прав"))
|
||||
return
|
||||
|
||||
bot_name = message.get_args()
|
||||
|
||||
if not bot_name:
|
||||
await message.answer(_("Нужно указать имя бота"))
|
||||
return
|
||||
|
||||
bot = await models.Bot.filter(name=bot_name).first()
|
||||
|
||||
if not bot:
|
||||
await message.answer(_("Такого бота нет в системе"))
|
||||
return
|
||||
|
||||
await state.set_state("wait_owner_notify_message")
|
||||
await state.update_data({"notify_to_bot": bot.id})
|
||||
|
||||
markup = types.ReplyKeyboardMarkup([[types.KeyboardButton(text=_("Пропустить"))]],
|
||||
resize_keyboard=True)
|
||||
|
||||
await message.answer(_("Введите текст, который будет отправлен владельцу бота {0}. "
|
||||
"Напишите 'Пропустить' чтобы отменить").format(bot_name), reply_markup=markup)
|
||||
|
||||
|
||||
@dp.message_handler(state="wait_owner_notify_message")
|
||||
async def on_notify_text(message: types.Message, state: FSMContext):
|
||||
if not message.text:
|
||||
await state.reset_state(with_data=True)
|
||||
await message.answer(_("Поддерживается только текст"), reply_markup=types.ReplyKeyboardRemove())
|
||||
return
|
||||
|
||||
if message.text.lower().strip() == _("пропустить"):
|
||||
await state.reset_state(with_data=True)
|
||||
await message.answer(_("Отменено"), reply_markup=types.ReplyKeyboardRemove())
|
||||
return
|
||||
|
||||
await state.update_data({"notify_text": message.text})
|
||||
await state.set_state("wait_owner_notify_message_confirm")
|
||||
|
||||
markup = types.ReplyKeyboardMarkup([[types.KeyboardButton(text=_("Отправить")),
|
||||
types.KeyboardButton(text=_("Отменить"))]], resize_keyboard=True)
|
||||
|
||||
await message.answer("Точно отправить?", reply_markup=markup)
|
||||
|
||||
|
||||
@dp.message_handler(state="wait_owner_notify_message_confirm")
|
||||
async def on_notify_message_confirm(message: types.Message, state: FSMContext):
|
||||
if not message.text or message.text.lower().strip() != _("Отправить"):
|
||||
await state.reset_state(with_data=True)
|
||||
await message.answer(_("Отменено"), reply_markup=types.ReplyKeyboardRemove())
|
||||
return
|
||||
|
||||
data = await state.get_data()
|
||||
bot = await models.Bot.get(pk=data["notify_to_bot"])
|
||||
text = data["notify_text"]
|
||||
chat_id = await bot.super_chat_id()
|
||||
|
||||
await message.bot.send_message(chat_id, text=text)
|
||||
|
||||
await message.answer(_("Отправлено"))
|
Loading…
Reference in New Issue
Block a user