mirror of
https://github.com/MrSedan/neuro-reply-bot-reworked.git
synced 2026-01-14 21:49:42 +03:00
feat: started proxy alerts
This commit is contained in:
8
handlers/filters/proxy_status.py
Normal file
8
handlers/filters/proxy_status.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
from aiogram import types
|
||||||
|
from aiogram.filters import Filter
|
||||||
|
|
||||||
|
|
||||||
|
class ProxyStatusFilter(Filter):
|
||||||
|
async def __call__(self, data: types.CallbackQuery) -> bool:
|
||||||
|
return data.data.startswith('proxy_status')
|
||||||
|
|
||||||
7
handlers/filters/refresh_proxy.py
Normal file
7
handlers/filters/refresh_proxy.py
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
from aiogram import types
|
||||||
|
from aiogram.filters import Filter
|
||||||
|
|
||||||
|
|
||||||
|
class RefreshProxyFilter(Filter):
|
||||||
|
async def __call__(self, data: types.CallbackQuery) -> bool:
|
||||||
|
return data.data.startswith('refresh_proxy_status')
|
||||||
@@ -34,6 +34,11 @@ class NeuroApiRouter(Router):
|
|||||||
self.message.register(handler.handler, handler.filter)
|
self.message.register(handler.handler, handler.filter)
|
||||||
|
|
||||||
|
|
||||||
|
def add_callback_query_handler(self, callback: MessageHandlerABC, *args: Any):
|
||||||
|
handler = callback(self.bot, *args)
|
||||||
|
self.callback_query.register(handler.handler, handler.filter)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Handler:
|
class Handler:
|
||||||
bot: Bot
|
bot: Bot
|
||||||
@@ -72,3 +77,11 @@ class Handler:
|
|||||||
self.router.add_message_handler(handler[0], *args)
|
self.router.add_message_handler(handler[0], *args)
|
||||||
else:
|
else:
|
||||||
self.router.add_message_handler(handler)
|
self.router.add_message_handler(handler)
|
||||||
|
|
||||||
|
def add_callback_handlers(self, handlers: List[MessageHandlerABC] | List[Tuple[MessageHandlerABC] | Optional[Tuple[Any, ...]]]):
|
||||||
|
for handler in handlers:
|
||||||
|
if isinstance(handler, tuple):
|
||||||
|
args = handler[1:] if len(handler)>1 else []
|
||||||
|
self.router.add_callback_query_handler(handler[0], *args)
|
||||||
|
else:
|
||||||
|
self.router.add_callback_query_handler(handler)
|
||||||
17
handlers/message_handlers/proxy/proxy_status_command.py
Normal file
17
handlers/message_handlers/proxy/proxy_status_command.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from aiogram import types
|
||||||
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||||
|
|
||||||
|
from handlers.filters.proxy_status import ProxyStatusFilter
|
||||||
|
|
||||||
|
from ..handler import MessageHandlerABC
|
||||||
|
|
||||||
|
|
||||||
|
class ProxyStatusCallback(MessageHandlerABC):
|
||||||
|
filter = ProxyStatusFilter()
|
||||||
|
async def _command(self, data: types.CallbackQuery):
|
||||||
|
builder = InlineKeyboardBuilder()
|
||||||
|
builder.button(text="Обновить статус🔄", callback_data="refresh_proxy_status")
|
||||||
|
date = datetime.now().strftime("%d.%m.%Y %H:%M:%S")
|
||||||
|
await self.bot.edit_message_text(f'{date} - Работаит', data.message.chat.id, data.message.message_id, reply_markup=builder.as_markup())
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from aiogram import types
|
||||||
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||||
|
|
||||||
|
from handlers.filters.refresh_proxy import RefreshProxyFilter
|
||||||
|
|
||||||
|
from ..handler import MessageHandlerABC
|
||||||
|
|
||||||
|
|
||||||
|
class RefreshProxyStatusCallback(MessageHandlerABC):
|
||||||
|
filter = RefreshProxyFilter()
|
||||||
|
async def _command(self, data: types.CallbackQuery):
|
||||||
|
builder = InlineKeyboardBuilder()
|
||||||
|
builder.button(text="Обновить статус🔄", callback_data="refresh_proxy_status")
|
||||||
|
date = datetime.now().strftime("%d.%m.%Y %H:%M:%S")
|
||||||
|
await self.bot.edit_message_text(f'{date} - Работаит', data.message.chat.id, data.message.message_id, reply_markup=builder.as_markup())
|
||||||
|
|
||||||
38
handlers/message_handlers/proxy/start_command.py
Normal file
38
handlers/message_handlers/proxy/start_command.py
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
|
from aiogram.filters import CommandStart
|
||||||
|
from aiogram.types import Message
|
||||||
|
from aiogram.utils.keyboard import InlineKeyboardBuilder
|
||||||
|
|
||||||
|
from neuroapi import neuroapi
|
||||||
|
|
||||||
|
from ..handler import MessageHandlerABC
|
||||||
|
|
||||||
|
|
||||||
|
class ProxyStartCommand(MessageHandlerABC):
|
||||||
|
filter = CommandStart()
|
||||||
|
async def _command(self, message: Message):
|
||||||
|
builder = InlineKeyboardBuilder()
|
||||||
|
builder.button(text="Статус прокси📝", callback_data="proxy_status")
|
||||||
|
is_admin = await neuroapi.admin.is_admin(message.from_user.id)
|
||||||
|
if is_admin:
|
||||||
|
builder.button(text="Всё плохо", callback_data="proxy_disable")
|
||||||
|
|
||||||
|
markup = None # builder.as_markup()
|
||||||
|
|
||||||
|
#TODO: Users to send list
|
||||||
|
users = dict()
|
||||||
|
|
||||||
|
if os.path.exists('users.json'):
|
||||||
|
with open('users.json', 'r') as f:
|
||||||
|
users = json.load(f)['users']
|
||||||
|
else:
|
||||||
|
with open('users.json', 'w+') as f:
|
||||||
|
json.dump({'users': [message.from_user.id]}, f)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
await message.answer('Приветствуем, теперь вы будете получать оповещения о статусе прокси.', reply_markup=markup)
|
||||||
17
handlers/proxy_commands.py
Normal file
17
handlers/proxy_commands.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from aiogram import Bot
|
||||||
|
|
||||||
|
from handlers.handler import Handler
|
||||||
|
from handlers.message_handlers.proxy.proxy_status_command import \
|
||||||
|
ProxyStatusCallback
|
||||||
|
from handlers.message_handlers.proxy.refresh_proxy_status_command import \
|
||||||
|
RefreshProxyStatusCallback
|
||||||
|
from handlers.message_handlers.proxy.start_command import ProxyStartCommand
|
||||||
|
from neuroapi.types import BotSettings as BotSettingsType
|
||||||
|
|
||||||
|
|
||||||
|
class ProxyCommands(Handler):
|
||||||
|
settings: BotSettingsType
|
||||||
|
def __init__(self, bot: Bot) -> None:
|
||||||
|
super().__init__(bot)
|
||||||
|
self.add_handlers([ProxyStartCommand])
|
||||||
|
self.add_callback_handlers([ProxyStatusCallback, RefreshProxyStatusCallback])
|
||||||
3
main.py
3
main.py
@@ -9,6 +9,7 @@ from aiogram.fsm.storage.redis import RedisStorage
|
|||||||
from redis import asyncio as redis
|
from redis import asyncio as redis
|
||||||
|
|
||||||
from handlers.admin_commands import AdminCommands
|
from handlers.admin_commands import AdminCommands
|
||||||
|
from handlers.proxy_commands import ProxyCommands
|
||||||
from handlers.user_commands import UserCommands
|
from handlers.user_commands import UserCommands
|
||||||
from neuroapi.config import GlobalConfig as Config
|
from neuroapi.config import GlobalConfig as Config
|
||||||
from neuroapi.types import NeuroApiBot
|
from neuroapi.types import NeuroApiBot
|
||||||
@@ -31,7 +32,7 @@ async def proxy_bot()->None:
|
|||||||
logging.warning('Proxy bot needs token in environment')
|
logging.warning('Proxy bot needs token in environment')
|
||||||
return
|
return
|
||||||
bot = NeuroApiBot(config.proxy_token)
|
bot = NeuroApiBot(config.proxy_token)
|
||||||
bot.include_router()
|
bot.include_router(ProxyCommands)
|
||||||
await bot.start()
|
await bot.start()
|
||||||
|
|
||||||
async def main() -> None:
|
async def main() -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user