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:
@@ -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:
|
@@ -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():
|
@@ -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()
|
||||
|
@@ -1 +1 @@
|
||||
from . import routers
|
||||
from .main import module_init
|
||||
|
@@ -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):
|
||||
|
@@ -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"
|
||||
}
|
||||
}
|
||||
|
7
src/ocab_modules/standard/admin/main.py
Normal file
7
src/ocab_modules/standard/admin/main.py
Normal 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)
|
@@ -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"))
|
||||
|
@@ -1 +1 @@
|
||||
from .main import module_init, module_late_init, register_command
|
||||
from .main import module_init, register_command
|
||||
|
@@ -1 +1 @@
|
||||
from .config import config
|
||||
from .config import get_approved_chat_id, get_default_chat_tag, get_roles
|
||||
|
@@ -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, "Неизвестно")
|
||||
|
@@ -0,0 +1 @@
|
||||
from .filters import ChatModerOrAdminFilter, ChatNotInApproveFilter
|
||||
|
@@ -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
|
||||
|
@@ -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"
|
||||
}
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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):
|
||||
|
Reference in New Issue
Block a user