0
0
mirror of https://gitflic.ru/project/maks1ms/ocab.git synced 2025-10-11 06:22:37 +03:00

убрал legacy модули и отрефакторил admin, filters

This commit is contained in:
2024-07-13 17:36:34 +03:00
parent 4a609db595
commit 212c2836c9
29 changed files with 310 additions and 67 deletions

View File

@@ -6,8 +6,8 @@ import time
import aiogram
import aiohttp
from ...standard.config.config import *
from ...standard.roles.roles import *
from ocab_modules.standard.config.config import *
from ocab_modules.standard.roles.roles import *
class Moderation:

View File

@@ -5,18 +5,12 @@ import random
from threading import Thread
from aiogram import Bot
from aiogram.types import Message
from aiogram.types import inline_keyboard_button as types
from aiogram.utils.keyboard import InlineKeyboardBuilder
from ocab_modules.legacy.moderation import ban_user, unmute_user
from src.ocab_modules.standard.config.config import get_telegram_check_bot
from src.ocab_modules.standard.database.db_api import *
from src.ocab_modules.standard.moderation.moderation import (
ban_user,
mute_user,
unmute_user,
)
from src.ocab_modules.standard.roles.roles import Roles
async def create_math_task():

View File

@@ -1,6 +1,6 @@
from aiogram import F, Router
from src.ocab_modules.standard.welcome.handlers import check_new_user
from ocab_modules.legacy.welcome.handlers import check_new_user
router = Router()

View File

@@ -1 +1 @@
from . import routers
from .main import module_init

View File

@@ -1,10 +1,10 @@
# flake8: noqa
import time
from aiogram import Bot
from aiogram.types import Message
from src.ocab_modules.standard.config.config import get_default_chat_tag
from ocab_core.modules_system.public_api import get_module
get_default_chat_tag = get_module("standard.config", "get_default_chat_tag")
async def delete_message(message: Message, bot: Bot):

View File

@@ -1,6 +1,11 @@
{
"id": "standard.admin",
"name": "Admin",
"description": "Модуль для работы с админкой",
"author": "OCAB Team",
"version": "1.0"
"version": "1.0.0",
"privileged": false,
"dependencies": {
"standard.filters": "^1.0.0"
}
}

View File

@@ -0,0 +1,7 @@
from ocab_core.modules_system.public_api import register_router
from .routers import router
async def module_init():
register_router(router)

View File

@@ -1,24 +1,30 @@
# flake8: noqa
from aiogram import F, Router
from aiogram.filters import Command
from src.ocab_modules.standard.admin.handlers import (
from ocab_core.modules_system.public_api import get_module, log
from .handlers import (
chat_not_in_approve_list,
delete_message,
error_access,
get_chat_id,
)
from src.ocab_modules.standard.filters.filters import (
ChatModerOrAdminFilter,
ChatNotInApproveFilter,
(ChatModerOrAdminFilter, ChatNotInApproveFilter) = get_module(
"standard.filters", ["ChatModerOrAdminFilter", "ChatNotInApproveFilter"]
)
log(ChatModerOrAdminFilter)
log(ChatNotInApproveFilter)
router = Router()
# Если сообщение содержит какой либо текст и выполняется фильтр ChatNotInApproveFilter, то вызывается функция chat_not_in_approve_list
router.message.register(chat_not_in_approve_list, ChatNotInApproveFilter(), F.text)
router.message.register(get_chat_id, ChatModerOrAdminFilter(), F.text == "/chatID")
router.message.register(get_chat_id, ChatModerOrAdminFilter(), Command("chatID"))
router.message.register(delete_message, ChatModerOrAdminFilter(), F.text == "/rm")
router.message.register(error_access, F.text == "/rm")
router.message.register(error_access, F.text == "/chatID")
router.message.register(delete_message, ChatModerOrAdminFilter(), Command("rm"))
router.message.register(error_access, Command("rm"))
router.message.register(error_access, Command("chatID"))

View File

@@ -1 +1 @@
from .main import module_init, module_late_init, register_command
from .main import module_init, register_command

View File

@@ -1 +1 @@
from .config import config
from .config import get_approved_chat_id, get_default_chat_tag, get_roles

View File

@@ -27,13 +27,17 @@ def get_telegram_check_bot() -> bool:
return config["TELEGRAM"]["CHECK_BOT"]
def get_aproved_chat_id() -> list:
def get_approved_chat_id() -> list:
# Возваращем сплитованный список id чатов в формате int
return [
int(chat_id) for chat_id in config["TELEGRAM"]["APPROVED_CHAT_ID"].split(" | ")
]
def get_roles():
return config["ROLES"]
def get_user_role_name(role_number) -> dict:
# Возвращаем название роли пользвателя по номеру роли, если такой роли нет, возвращаем неизвестно
return config["ROLES"].get(role_number, "Неизвестно")

View File

@@ -0,0 +1 @@
from .filters import ChatModerOrAdminFilter, ChatNotInApproveFilter

View File

@@ -2,9 +2,10 @@ from aiogram import Bot
from aiogram.filters import BaseFilter
from aiogram.types import Message
from ocab_core.logger import log
from ocab_modules.standard.config.config import get_aproved_chat_id
from ocab_modules.standard.roles.roles import Roles
from ocab_core.modules_system.public_api import get_module, log
get_approved_chat_id = get_module("standard.config", "get_approved_chat_id")
Roles = get_module("standard.roles", "Roles")
class ChatModerOrAdminFilter(BaseFilter):
@@ -21,14 +22,11 @@ class ChatModerOrAdminFilter(BaseFilter):
class ChatNotInApproveFilter(BaseFilter):
async def __call__(self, message: Message, bot: Bot) -> bool:
# print("chat_check")
await log("chat_check")
log("chat_check")
chat_id = message.chat.id
if chat_id in get_aproved_chat_id():
# print(f"Chat in approve list: {chat_id}")
await log(f"Chat in approve list: {chat_id}")
if chat_id in get_approved_chat_id():
log(f"Chat in approve list: {chat_id}")
return False
else:
# print(f"Chat not in approve list: {chat_id}")
await log(f"Chat not in approve list: {chat_id}")
log(f"Chat not in approve list: {chat_id}")
return True

View File

@@ -1,6 +1,12 @@
{
"id": "standard.filters",
"name": "Filters",
"description": "Модуль с фильтрами",
"author": "OCAB Team",
"version": "1.0"
"version": "1.0.0",
"privileged": false,
"dependencies": {
"standard.roles": "^1.0.0",
"standard.config": "^1.0.0"
}
}

View File

@@ -5,7 +5,7 @@ from aiogram import Bot, F, Router, types
from ocab_core.logger import log
from ocab_modules.external.yandexgpt.handlers import answer_to_message
from ocab_modules.standard.config.config import (
get_aproved_chat_id,
get_approved_chat_id,
get_yandexgpt_in_words,
get_yandexgpt_start_words,
)
@@ -17,7 +17,7 @@ async def chat_check(message: types.Message):
# Если чата нет в базе данных, то проверяем его в наличии в конфиге и если он там есть то добавляем его в БД
# Если чат есть в базе данных, то pass
if get_chat(message.chat.id) is None:
if message.chat.id in get_aproved_chat_id():
if message.chat.id in get_approved_chat_id():
# print(f"Chat in approve list: {message.chat.id} {message.chat.title}")
await log(f"Chat in approve list: {message.chat.id} {message.chat.title}")
add_chat(message.chat.id, message.chat.title)

View File

@@ -1,7 +1,9 @@
from ocab_core.modules_system.public_api import get_module
get_user_role = get_module("standard.database", "db_api.get_user_role")
config: dict = get_module("standard.config", "config")
get_roles = get_module("standard.config", "get_roles")
roles = get_roles()
class Roles:
@@ -9,13 +11,12 @@ class Roles:
moderator = "MODERATOR"
admin = "ADMIN"
bot = "BOT"
__roles = config["ROLES"]
def __init__(self):
self.user_role_id = self.__roles[self.user]
self.moderator_role_id = self.__roles[self.moderator]
self.admin_role_id = self.__roles[self.admin]
self.bot_role_id = self.__roles[self.bot]
self.user_role_id = roles[self.user]
self.moderator_role_id = roles[self.moderator]
self.admin_role_id = roles[self.admin]
self.bot_role_id = roles[self.bot]
async def check_admin_permission(self, user_id):
match get_user_role(user_id):