Переименование проекта c OCAB в Karkas

This commit is contained in:
Armatik
2024-08-16 22:42:02 +03:00
parent 5b3963e87c
commit 3c7dffc06d
75 changed files with 257 additions and 265 deletions

View File

@@ -1,12 +1,12 @@
# OCAB Modules
# Karkas Blocks
OCAB Modules содержит набор модулей для платформы Open Chat AI Bot (OCAB).
Karkas Blocks содержит набор модулей для платформы Open Chat AI Bot (Karkas).
## Описание
OCAB - это платформа для создания чат-ботов Telegram. Модули - это расширения, которые добавляют функциональность ботам OCAB.
Karkas - это платформа для создания чат-ботов Telegram. Модули - это расширения, которые добавляют функциональность ботам Karkas.
## Типы модулей
* **Стандартные модули (standard.*):** Предоставляют основные функции, такие как управление пользователями, ролями и настройками.
* **Дополнительные официальные модули (external.*):** Разработаны командой OCAB и предоставляют расширенные возможности, такие как интеграция с нейросетями, внешними сервисами и API.
* **Дополнительные официальные модули (external.*):** Разработаны командой Karkas и предоставляют расширенные возможности, такие как интеграция с нейросетями, внешними сервисами и API.

View File

@@ -1 +1 @@
from .lib import module_loader
from .lib import block_loader

View File

@@ -1,8 +1,8 @@
import importlib
import os
from ocab_core.modules_system.loaders.fs_loader import FSLoader
from ocab_core.modules_system.loaders.unsafe_fs_loader import UnsafeFSLoader
from karkas_core.modules_system.loaders.fs_loader import FSLoader
from karkas_core.modules_system.loaders.unsafe_fs_loader import UnsafeFSLoader
def get_module_directory(module_name):
@@ -15,11 +15,11 @@ def get_module_directory(module_name):
return os.path.dirname(module_path)
ocab_modules_path = get_module_directory("ocab_modules")
karkas_blocks_path = get_module_directory("karkas_blocks")
def module_loader(namespace: str, module_name: str, safe=True):
def block_loader(namespace: str, module_name: str, safe=True):
if not safe:
return UnsafeFSLoader(f"{ocab_modules_path}/{namespace}/{module_name}")
return UnsafeFSLoader(f"{karkas_blocks_path}/{namespace}/{module_name}")
else:
return FSLoader(f"{ocab_modules_path}/{namespace}/{module_name}")
return FSLoader(f"{karkas_blocks_path}/{namespace}/{module_name}")

View File

@@ -4,10 +4,10 @@ from typing import TYPE_CHECKING
from aiogram import Bot
from aiogram.types import Message
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from karkas_blocks.standard.config import IConfig
config: "IConfig" = get_module("standard.config", "config")

View File

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

View File

@@ -1,4 +1,4 @@
from ocab_core.modules_system.public_api import register_router
from karkas_core.modules_system.public_api import register_router
from .routers import router

View File

@@ -2,7 +2,7 @@
from aiogram import F, Router
from aiogram.filters import Command
from ocab_core.modules_system.public_api import get_module, log
from karkas_core.modules_system.public_api import get_module, log
from .handlers import (
chat_not_in_approve_list,

View File

@@ -16,7 +16,7 @@
## Пример
```python
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
register_command = get_module("standard.command_helper", "register_command")

View File

@@ -2,7 +2,7 @@
"id": "standard.command_helper",
"name": "Command helper",
"description": "Модуль для отображения команд при вводе '/'",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {}

View File

@@ -1,6 +1,6 @@
from aiogram.types import BotCommand
from ocab_core.modules_system.public_api import set_my_commands
from karkas_core.modules_system.public_api import set_my_commands
commands = dict()

View File

@@ -18,7 +18,7 @@
## Пример
```python
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
config = get_module("standard.config", "config")

View File

@@ -66,7 +66,7 @@ class ConfigManager:
def _get_module_id(self):
caller_frame = inspect.currentframe().f_back.f_back
caller_globals = caller_frame.f_globals
module_id = caller_globals.get("__ocab_module_id__")
module_id = caller_globals.get("__karkas_block_id__")
return module_id
def mass_set(self, updates: Dict[str, Any]):

View File

@@ -2,7 +2,7 @@
"id": "standard.config",
"name": "Config YAML",
"description": "Модуль для работы с конфигурационным файлом бота (YAML)",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": true,
"dependencies": {

View File

@@ -1,4 +1,4 @@
from ocab_core.modules_system.public_api import get_module, log
from karkas_core.modules_system.public_api import get_module, log
from .config import config
from .miniapp_ui import get_miniapp_blueprint

View File

@@ -12,10 +12,10 @@ try:
except ImportError:
DASH_AVAILABLE = False
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
if TYPE_CHECKING:
from ocab_modules.standard.roles import Roles as IRoles
from karkas_blocks.standard.roles import Roles as IRoles
def create_control(key: str, config: ConfigManager):

View File

@@ -1,6 +1,6 @@
import unittest
from src.ocab_modules.standard.config.config import get_config
from src.karkas_blocks.standard.config.config import get_config
yaml_load = get_config(is_test=True)

View File

@@ -1,6 +1,6 @@
## Модуль DataBase
Модуль DataBase предназначен для ведения и работы с базами данных OCAB.
Модуль DataBase предназначен для ведения и работы с базами данных Karkas.
Модуль содержит в себе следующие таблицы:

View File

@@ -16,12 +16,12 @@ def connect_database(is_test: bool = False, module: str | None = None):
raise NotExpectedModuleName()
db_path = "database"
database = pw.SqliteDatabase(f"{db_path}/OCAB.db")
database = pw.SqliteDatabase(f"{db_path}/Karkas.db")
database_proxy.initialize(database)
database.connect()
create_tables(database)
return database, f"{db_path}/OCAB.db"
return database, f"{db_path}/Karkas.db"
def create_tables(db: pw.SqliteDatabase):

View File

@@ -2,7 +2,7 @@
"id": "standard.database",
"name": "Database",
"description": "Модуль для работы с БД",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": true,
"dependencies": {}

View File

@@ -16,7 +16,7 @@
```python
from aiogram import Router
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
ChatModerOrAdminFilter = get_module("standard.filters", "ChatModerOrAdminFilter")

View File

@@ -5,11 +5,11 @@ from aiogram.filters import BaseFilter
from aiogram.types import Message
from typing_extensions import deprecated
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from ocab_modules.standard.roles import Roles as IRoles
from karkas_blocks.standard.config import IConfig
from karkas_blocks.standard.roles import Roles as IRoles
config: "IConfig" = get_module("standard.config", "config")

View File

@@ -2,7 +2,7 @@
"id": "standard.filters",
"name": "Filters",
"description": "Модуль с фильтрами",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": true,
"dependencies": {

View File

@@ -4,11 +4,11 @@ from typing import TYPE_CHECKING, Any, Dict, Optional
from aiogram.fsm.state import State
from aiogram.fsm.storage.base import BaseStorage, StorageKey
from ocab_core.modules_system.public_api import get_module, log
from ocab_core.modules_system.public_api.public_api import set_fsm
from karkas_core.modules_system.public_api import get_module, log
from karkas_core.modules_system.public_api.public_api import set_fsm
if TYPE_CHECKING:
from ocab_modules.standard.database.repositories import (
from karkas_blocks.standard.database.repositories import (
FSMDataRepository as IFSMDataRepository,
)

View File

@@ -2,7 +2,7 @@
"id": "standard.fsm_database_storage",
"name": "FSM Database Storage",
"description": "Очень полезный модуль",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {

View File

@@ -1,21 +1,21 @@
{
"id": "standard.help",
"name": "Help",
"description": "Модуль для вывода /help сообщения",
"author": "OCAB Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {
"required": {
"standard.config": "^1.0.0"
},
"optional": {
"standard.command_helper": "^1.0.0"
}
"id": "standard.help",
"name": "Help",
"description": "Модуль для вывода /help сообщения",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {
"required": {
"standard.config": "^1.0.0"
},
"pythonDependencies": {
"required": {
"string": "*"
}
"optional": {
"standard.command_helper": "^1.0.0"
}
},
"pythonDependencies": {
"required": {
"string": "*"
}
}
}

View File

@@ -5,14 +5,14 @@ from aiogram import Router
from aiogram.filters import Command
from aiogram.types import Message
from ocab_core.modules_system.public_api import (
from karkas_core.modules_system.public_api import (
get_metainfo,
get_module,
register_router,
)
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from karkas_blocks.standard.config import IConfig
config: "IConfig" = get_module("standard.config", "config")

View File

@@ -5,11 +5,11 @@ from typing import TYPE_CHECKING
from aiogram import Bot
from aiogram.types import Message
from ocab_core.modules_system.public_api import get_module, log
from karkas_core.modules_system.public_api import get_module, log
if TYPE_CHECKING:
from ocab_modules.standard.database import db_api as IDbApi
from ocab_modules.standard.roles import Roles as IRoles
from karkas_blocks.standard.database import db_api as IDbApi
from karkas_blocks.standard.roles import Roles as IRoles
db_api: "IDbApi" = get_module(
"standard.database",

View File

@@ -2,7 +2,7 @@
"id": "standard.info",
"name": "Info",
"description": "Модуль с информацией",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {

View File

@@ -1,7 +1,7 @@
from aiogram import Router
from aiogram.filters import Command
from ocab_core.modules_system.public_api import get_module, register_router
from karkas_core.modules_system.public_api import get_module, register_router
from .handlers import get_chat_info, get_user_info

View File

@@ -2,7 +2,7 @@
"id": "standard.message_processing",
"name": "Info",
"description": "Модуль с информацией",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {

View File

@@ -4,10 +4,10 @@ from typing import TYPE_CHECKING
from aiogram import Bot, F, Router, types
from ocab_core.modules_system.public_api import get_module, log, register_router
from karkas_core.modules_system.public_api import get_module, log, register_router
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from karkas_blocks.standard.config import IConfig
config: "IConfig" = get_module("standard.config", "config")

View File

@@ -15,7 +15,7 @@
## Пример
```python
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
register_page = get_module("standard.miniapp", "register_page")

View File

@@ -12,7 +12,7 @@ WEBAPP_LOADER_TEMPLATE = """
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>OCAB</title>
<title>Karkas</title>
<script src="https://telegram.org/js/telegram-web-app.js"></script>
<script>
window.addEventListener('message', function(event) {

View File

@@ -1,23 +1,23 @@
{
"id": "standard.miniapp",
"name": "Miniapp",
"description": "Очень полезный модуль",
"author": "OCAB Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {
"required": {
"standard.config": {
"version": "^1.0.0",
"uses": []
}
}
},
"pythonDependencies": {
"required": {
"dash": "^2.17.1",
"dash_extensions": "^1.0.18",
"dash_bootstrap_components": "^1.6.0"
}
"id": "standard.miniapp",
"name": "Miniapp",
"description": "Очень полезный модуль",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {
"required": {
"standard.config": {
"version": "^1.0.0",
"uses": []
}
}
},
"pythonDependencies": {
"required": {
"dash": "^2.17.1",
"dash_extensions": "^1.0.18",
"dash_bootstrap_components": "^1.6.0"
}
}
}

View File

@@ -8,13 +8,13 @@ import flask
from dash_extensions.enrich import DashBlueprint, DashProxy, Input, Output, dcc, html
from dash_extensions.pages import setup_page_components
from ocab_core.modules_system.public_api import get_module, log
from karkas_core.modules_system.public_api import get_module, log
from .dash_telegram_auth import get_auth_server, setup_auth_clientcallbacks
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from ocab_modules.standard.roles import Roles as IRoles
from karkas_blocks.standard.config import IConfig
from karkas_blocks.standard.roles import Roles as IRoles
pages = OrderedDict()
@@ -87,7 +87,7 @@ def create_dash_app(requests_pathname_prefix: str = None) -> dash.Dash:
color="light",
className="me-2",
),
dbc.NavbarBrand("OCAB"),
dbc.NavbarBrand("Karkas"),
]
),
color="primary",

View File

@@ -3,14 +3,14 @@ from typing import TYPE_CHECKING
from aiogram import types
from fastapi.middleware.wsgi import WSGIMiddleware
from ocab_core.modules_system.public_api import (
from karkas_core.modules_system.public_api import (
Storage,
get_module,
set_chat_menu_button,
)
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from karkas_blocks.standard.config import IConfig
config: "IConfig" = get_module("standard.config", "config")

View File

@@ -1,23 +1,23 @@
{
"id": "standard.report",
"name": "Report",
"description": "Модуль для быстрой жалобы на спам",
"author": "OCAB Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {
"required": {
"standard.config": "^1.0.0"
},
"optional": {
"standard.command_helper": "^1.0.0",
"standard.filters": "^1.0.0"
}
"id": "standard.report",
"name": "Report",
"description": "Модуль для быстрой жалобы на спам",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": false,
"dependencies": {
"required": {
"standard.config": "^1.0.0"
},
"pythonDependencies": {
"required": {
"random": "*",
"string": "*"
}
"optional": {
"standard.command_helper": "^1.0.0",
"standard.filters": "^1.0.0"
}
},
"pythonDependencies": {
"required": {
"random": "*",
"string": "*"
}
}
}

View File

@@ -6,11 +6,11 @@ from aiogram import Router
from aiogram.filters import Command
from aiogram.types import ChatMemberAdministrator, ChatMemberOwner, Message
from ocab_core.modules_system.public_api import get_module, log, register_router
from karkas_core.modules_system.public_api import get_module, log, register_router
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from ocab_modules.standard.filters import ChatIDFilter as IChatIDFilter
from karkas_blocks.standard.config import IConfig
from karkas_blocks.standard.filters import ChatIDFilter as IChatIDFilter
config: "IConfig" = get_module("standard.config", "config")

View File

@@ -24,7 +24,7 @@
## Пример
```python
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
Roles = get_module("standard.roles", "Roles")

View File

@@ -2,7 +2,7 @@
"id": "standard.roles",
"name": "Roles",
"description": "Модуль для работы с ролями",
"author": "OCAB Team",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": true,
"dependencies": {

View File

@@ -1,9 +1,9 @@
from typing import TYPE_CHECKING
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from karkas_blocks.standard.config import IConfig
def module_init():

View File

@@ -1,10 +1,10 @@
from typing import TYPE_CHECKING
from ocab_core.modules_system.public_api import get_module
from karkas_core.modules_system.public_api import get_module
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from ocab_modules.standard.database.db_api import get_user_role as IGetUserRoleType
from karkas_blocks.standard.config import IConfig
from karkas_blocks.standard.database.db_api import get_user_role as IGetUserRoleType
get_user_role: "IGetUserRoleType" = get_module(
"standard.database", "db_api.get_user_role"

View File

@@ -1,22 +1,22 @@
{
"id": "standard.welcome",
"name": "Welcome",
"description": "Модуль для проверки на бота",
"author": "OCAB Team",
"version": "1.0.0",
"privileged": true,
"dependencies": {
"required": {
"standard.config": "^1.0.0"
},
"optional": {
"standard.command_helper": "^1.0.0",
"standard.filters": "^1.0.0"
}
"id": "standard.welcome",
"name": "Welcome",
"description": "Модуль для проверки на бота",
"author": "Karkas Team",
"version": "1.0.0",
"privileged": true,
"dependencies": {
"required": {
"standard.config": "^1.0.0"
},
"pythonDependencies": {
"required": {
"asyncio": "*"
}
"optional": {
"standard.command_helper": "^1.0.0",
"standard.filters": "^1.0.0"
}
},
"pythonDependencies": {
"required": {
"asyncio": "*"
}
}
}

View File

@@ -9,7 +9,7 @@ from aiogram.exceptions import TelegramBadRequest
from aiogram.filters import JOIN_TRANSITION, LEAVE_TRANSITION, ChatMemberUpdatedFilter
from aiogram.types import ChatMemberUpdated, PollAnswer
from ocab_core.modules_system.public_api import get_module, log, register_router
from karkas_core.modules_system.public_api import get_module, log, register_router
from .utils import MultiKeyDict, get_plural_form, key_from_poll, key_from_user_chat
from .verifications_methods.base import BaseTask, VerificationCallback
@@ -22,8 +22,8 @@ from .verifications_methods.simple import (
from .verifications_methods.utils import user_mention
if TYPE_CHECKING:
from ocab_modules.standard.config import IConfig
from ocab_modules.standard.filters import ChatIDFilter as IChatIDFilter
from karkas_blocks.standard.config import IConfig
from karkas_blocks.standard.filters import ChatIDFilter as IChatIDFilter
config: "IConfig" = get_module("standard.config", "config")

View File

@@ -6,7 +6,7 @@ from aiogram.exceptions import TelegramBadRequest
from aiogram.filters.callback_data import CallbackData
from aiogram.types import ChatMemberUpdated
from ocab_core.modules_system.public_api import log
from karkas_core.modules_system.public_api import log
from .utils import mute_user, unmute_user

View File

@@ -914,7 +914,7 @@ files = [
]
[[package]]
name = "ocab-core"
name = "karkas-core"
version = "0.1.0"
description = ""
optional = false
@@ -934,7 +934,7 @@ webhook = ["fastapi (>=0.111.1,<0.112.0)", "hypercorn (>=0.17.3,<0.18.0)"]
[package.source]
type = "directory"
url = "../ocab_core"
url = "../karkas_core"
[[package]]
name = "packaging"

View File

@@ -1,5 +1,5 @@
[tool.poetry]
name = "ocab-modules"
name = "karkas-blocks"
version = "0.1.0"
description = ""
authors = ["Maxim Slipenko <maxim@slipenko.com>"]
@@ -7,7 +7,7 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "~3.12"
ocab-core = { path = "../ocab_core", develop = true }
karkas-core = { path = "../karkas_core", develop = true }
peewee = "^3.17.6"