|
@@ -7,8 +7,11 @@ from datetime import datetime
|
|
|
from ujson import dumps
|
|
|
from tortoise.exceptions import IntegrityError
|
|
|
from telethon.utils import get_display_name, get_peer_id
|
|
|
-from aiofiles.os import remove
|
|
|
-from aiofiles.os import path
|
|
|
+from aiofiles.os import (
|
|
|
+ remove,
|
|
|
+ path
|
|
|
+)
|
|
|
+from aiohttp import ClientSession
|
|
|
from emoji import is_emoji
|
|
|
|
|
|
from actions import (
|
|
@@ -20,7 +23,12 @@ from actions import (
|
|
|
add_admin,
|
|
|
delete_admin,
|
|
|
add_or_update_birthday,
|
|
|
- get_birthdays
|
|
|
+ get_birthdays,
|
|
|
+ add_server,
|
|
|
+ delete_server,
|
|
|
+ add_allowed,
|
|
|
+ delete_allowed,
|
|
|
+ list_servers
|
|
|
)
|
|
|
from utils import (
|
|
|
WORDS_TABLE,
|
|
@@ -154,6 +162,68 @@ async def addgif_handler(bot, event, command):
|
|
|
|
|
|
await event.reply('Готово!~~')
|
|
|
|
|
|
+async def addserver_handler(bot, event, command):
|
|
|
+ if command.argc < 2:
|
|
|
+ await event.reply('Пожалуйста, укажите имя и адрес сервера!')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ try:
|
|
|
+ await add_server(command.args[0], command.args[1])
|
|
|
+ except SyntaxError:
|
|
|
+ await event.reply('Недопустимое имя сервера!!')
|
|
|
+
|
|
|
+ return
|
|
|
+ except ValueError:
|
|
|
+ await event.reply('Пожалуйста, введите корректный IPv4-/IPv6-адрес!')
|
|
|
+
|
|
|
+ return
|
|
|
+ except IntegrityError:
|
|
|
+ await event.reply('Данный сервер уже был добавлен ранее!')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ await event.reply('Готово!~~')
|
|
|
+
|
|
|
+async def delserver_handler(bot, event, command):
|
|
|
+ if command.argc < 1:
|
|
|
+ await event.reply('Пожалуйста, укажите имя сервера!')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ try:
|
|
|
+ await delete_server(command.args[0])
|
|
|
+ except SyntaxError:
|
|
|
+ await event.reply('Недопустимое имя сервера!!')
|
|
|
+
|
|
|
+ return
|
|
|
+ except IndexError:
|
|
|
+ await event.reply('Сервер с таким именем не найден!')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ await event.reply('Готово!~~')
|
|
|
+
|
|
|
+async def allow_handler(bot, event, command):
|
|
|
+ try:
|
|
|
+ await add_allowed(event.peer_id)
|
|
|
+ except IntegrityError:
|
|
|
+ await event.reply('Данный чат уже добавлен в список разрешённых!')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ await event.reply('Готово!~~')
|
|
|
+
|
|
|
+async def disallow_handler(bot, event, command):
|
|
|
+ try:
|
|
|
+ await delete_allowed(event.peer_id)
|
|
|
+ except IndexError:
|
|
|
+ await event.reply('Данный чат не найден в списке разрешённых!!')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ await event.reply('Готово!~~')
|
|
|
+
|
|
|
# Very, very, VERY evil code...
|
|
|
async def make_message_shot(bot, message):
|
|
|
if message.sender is None:
|
|
@@ -288,14 +358,58 @@ async def bday_handler(bot, event, command):
|
|
|
|
|
|
await event.reply(f'Дни рождения:\n\n{birthdays_list}')
|
|
|
|
|
|
+async def vpn_handler(bot, event, command):
|
|
|
+ if command.argc < 1:
|
|
|
+ await event.reply(f'Пожалуйста, укажите имя сервера! Доступные сервера: {await list_servers()}')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ try:
|
|
|
+ ip = await get_server_ip(commands.args[0])
|
|
|
+ except SyntaxError:
|
|
|
+ await event.reply('Недопустимое имя сервера!!')
|
|
|
+
|
|
|
+ return
|
|
|
+ except IndexError:
|
|
|
+ await event.reply('Сервер с таким именем не найден!')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ if event.sender is None:
|
|
|
+ sender_id = event.peer_id.channel_id
|
|
|
+ else:
|
|
|
+ sender_id = event.sender.id
|
|
|
+
|
|
|
+ async with ClientSession() as session:
|
|
|
+ try:
|
|
|
+ async with session.post(
|
|
|
+ f'http://{ip}:9217/api/obtain',
|
|
|
+ data={'user_id': sender_id}
|
|
|
+ ) as resp:
|
|
|
+ data = await resp.json()
|
|
|
+
|
|
|
+ profile = data['profile']
|
|
|
+ except:
|
|
|
+ await event.reply('Произошла ошибка при попытке обращения к API сервера… :(')
|
|
|
+
|
|
|
+ return
|
|
|
+
|
|
|
+ await event.reply(f'Ваш файл конфигурации WireGuard:\n``` {profile}```'))
|
|
|
+
|
|
|
COMMANDS = {
|
|
|
'newadmin': Handler(newadmin_handler, is_restricted=True),
|
|
|
'deladmin': Handler(deladmin_handler, is_restricted=True),
|
|
|
'newaction': Handler(newaction_handler, is_restricted=True),
|
|
|
'delaction': Handler(delaction_handler, is_restricted=True),
|
|
|
'addgif': Handler(addgif_handler, is_restricted=True),
|
|
|
+ 'addserver': Handler(addserver_handler, is_restricted=True),
|
|
|
+ 'delserver': Handler(delserver_handler, is_restricted=True),
|
|
|
+ 'allow': Handler(allow_handler, is_restricted=True),
|
|
|
+ 'disallow': Handler(disallow_handler, is_restricted=True),a
|
|
|
|
|
|
'save': Handler(save_handler),
|
|
|
|
|
|
- 'bday': Handler(bday_handler)
|
|
|
+ 'bday': Handler(bday_handler),
|
|
|
+
|
|
|
+ 'vpn': Handler(vpn_handler)
|
|
|
}
|