mirror of
https://gitflic.ru/project/alt-gnome/karkas.git
synced 2024-12-23 16:23:02 +03:00
Переименование проекта c OCAB в Karkas
This commit is contained in:
parent
5b3963e87c
commit
3c7dffc06d
2
.gitignore
vendored
2
.gitignore
vendored
@ -5,6 +5,6 @@ env
|
||||
.venv
|
||||
venv
|
||||
__pycache__
|
||||
OCAB.db
|
||||
Karkas.db
|
||||
config.yaml
|
||||
dist
|
||||
|
@ -1,8 +0,0 @@
|
||||
Руководитель проекта:
|
||||
- Семен Фомченков (@Armatik), e-mail: armatik@alt-gnome.ru
|
||||
|
||||
Ведущие разработчики:
|
||||
- Максим Слипенко (@Maks1m_S), e-mail: maxim@slipenko.com
|
||||
|
||||
Участники проекта:
|
||||
- Илья Женецкий (@ilyazheprog)
|
46
README.md
46
README.md
@ -1,23 +1,23 @@
|
||||
# OCAB - Open Chat Ai Bot
|
||||
# Karkas - Open Chat Ai Bot
|
||||
|
||||
## Что такое OCAB?
|
||||
## Что такое Karkas?
|
||||
|
||||
OCAB - это платформа для разработки модульных Telegram-ботов, которая призвана упростить взаимодействие с чатами.
|
||||
OCAB предоставляет возможность расширять функциональность бота с помощью интеграции различных модулей.
|
||||
Karkas - это платформа для разработки модульных Telegram-ботов, которая призвана упростить взаимодействие с чатами.
|
||||
Karkas предоставляет возможность расширять функциональность бота с помощью интеграции различных модулей.
|
||||
Код платформы и набор стандартных модулей находятся в этом монорепозитории.
|
||||
|
||||
## Структура монорепозитория
|
||||
|
||||
Монорепозиторий OCAB включает в себя:
|
||||
* **Ядро OCAB (src/ocab_core):** Содержит основные компоненты платформы, такие как система управления модулями,
|
||||
Монорепозиторий Karkas включает в себя:
|
||||
* **Ядро Karkas (src/karkas_core):** Содержит основные компоненты платформы, такие как система управления модулями,
|
||||
логирование и утилиты.
|
||||
* **Модули OCAB (src/ocab_modules):** Содержит стандартные и дополнительные модули, которые расширяют
|
||||
функциональность ботов OCAB.
|
||||
* **Пример бота (src/gnomik):** Пример реализации бота на платформе OCAB.
|
||||
* **Модули Karkas (src/karkas_blocks):** Содержит стандартные и дополнительные модули, которые расширяют
|
||||
функциональность ботов Karkas.
|
||||
* **Пример бота (src/gnomik):** Пример реализации бота на платформе Karkas.
|
||||
|
||||
## Модули
|
||||
|
||||
Модули OCAB - это независимые компоненты, которые добавляют функциональность к боту.
|
||||
Модули Karkas - это независимые компоненты, которые добавляют функциональность к боту.
|
||||
|
||||
### Структура модуля
|
||||
|
||||
@ -26,19 +26,19 @@ OCAB предоставляет возможность расширять фун
|
||||
### Стандартные модули
|
||||
|
||||
Стандартные модули предоставляют базовые функции для работы бота:
|
||||
* [admin](src/ocab_modules/ocab_modules/standard/admin/README.md) - модуль для модерирования чата.
|
||||
* [roles](src/ocab_modules/ocab_modules/standard/roles/README.md) - модуль ролей пользователей.
|
||||
* [config](src/ocab_modules/ocab_modules/standard/config/README.md) - модуль управления конфигурацией бота.
|
||||
* [database](src/ocab_modules/ocab_modules/standard/database/README.md) - модуль для работы с базой данных.
|
||||
* [fsm_database_storage](src/ocab_modules/ocab_modules/standard/fsm_database_storage/README.md) - модуль для хранения состояний FSM в базе данных.
|
||||
* [filters](src/ocab_modules/ocab_modules/standard/filters/README.md) - модуль, предоставляющий фильтры для aiogram.
|
||||
* [message_processing](src/ocab_modules/ocab_modules/standard/message_processing/README.md) - модуль обработки входящих сообщений.
|
||||
* [miniapp](src/ocab_modules/ocab_modules/standard/miniapp/README.md) - модуль для реализации веб-интерфейса бота.
|
||||
* [command_helper](src/ocab_modules/ocab_modules/standard/command_helper/README.md) - модуль для упрощения регистрации команд бота.
|
||||
* [info](src/ocab_modules/ocab_modules/standard/info/README.md) - модуль предоставления информации о пользователях и чатах.
|
||||
* [admin](src/karkas_blocks/karkas_blocks/standard/admin/README.md) - модуль для модерирования чата.
|
||||
* [roles](src/karkas_blocks/karkas_blocks/standard/roles/README.md) - модуль ролей пользователей.
|
||||
* [config](src/karkas_blocks/karkas_blocks/standard/config/README.md) - модуль управления конфигурацией бота.
|
||||
* [database](src/karkas_blocks/karkas_blocks/standard/database/README.md) - модуль для работы с базой данных.
|
||||
* [fsm_database_storage](src/karkas_blocks/karkas_blocks/standard/fsm_database_storage/README.md) - модуль для хранения состояний FSM в базе данных.
|
||||
* [filters](src/karkas_blocks/karkas_blocks/standard/filters/README.md) - модуль, предоставляющий фильтры для aiogram.
|
||||
* [message_processing](src/karkas_blocks/karkas_blocks/standard/message_processing/README.md) - модуль обработки входящих сообщений.
|
||||
* [miniapp](src/karkas_blocks/karkas_blocks/standard/miniapp/README.md) - модуль для реализации веб-интерфейса бота.
|
||||
* [command_helper](src/karkas_blocks/karkas_blocks/standard/command_helper/README.md) - модуль для упрощения регистрации команд бота.
|
||||
* [info](src/karkas_blocks/karkas_blocks/standard/info/README.md) - модуль предоставления информации о пользователях и чатах.
|
||||
|
||||
### Дополнительные официальные модули
|
||||
|
||||
Дополнительные официальные модули разработаны командой OCAB и предоставляют расширенные возможности для бота:
|
||||
* [yandexgpt](src/ocab_modules/ocab_modules/external/yandexgpt/README.md) - модуль для интеграции с нейросетью YandexGPT.
|
||||
* [create_report_apps](src/ocab_modules/ocab_modules/external/create_report_apps/README.md) - модуль для создания отчетов об ошибках.
|
||||
Дополнительные официальные модули разработаны командой Karkas и предоставляют расширенные возможности для бота:
|
||||
* [yandexgpt](src/karkas_blocks/karkas_blocks/external/yandexgpt/README.md) - модуль для интеграции с нейросетью YandexGPT.
|
||||
* [create_report_apps](src/karkas_blocks/karkas_blocks/external/create_report_apps/README.md) - модуль для создания отчетов об ошибках.
|
||||
|
12
docs/DEV.md
12
docs/DEV.md
@ -1,10 +1,10 @@
|
||||
## Настройка рабочего окружения
|
||||
|
||||
Данная инструкция поможет вам настроить рабочее окружение для разработки OCAB.
|
||||
Данная инструкция поможет вам настроить рабочее окружение для разработки Karkas.
|
||||
|
||||
### Предварительные требования
|
||||
|
||||
* **Python 3.12:** OCAB требует Python 3.12.
|
||||
* **Python 3.12:** Karkas требует Python 3.12.
|
||||
* **VSCode:** Рекомендуется использовать VSCode для разработки.
|
||||
* **Git:** У вас должен быть установлен Git для клонирования репозитория.
|
||||
|
||||
@ -12,18 +12,18 @@
|
||||
|
||||
1. **Клонируйте репозиторий:**
|
||||
```bash
|
||||
git clone https://gitflic.ru/project/armatik/ocab.git
|
||||
git clone https://gitflic.ru/project/alt-gnome/karkas.git
|
||||
```
|
||||
|
||||
2. **Откройте проект в VSCode:**
|
||||
* Откройте папку `ocab` в VSCode.
|
||||
* VSCode автоматически предложит открыть проект как workspace, используя файл `ocab.code-workspace`.
|
||||
* Откройте папку `karkas` в VSCode.
|
||||
* VSCode автоматически предложит открыть проект как workspace, используя файл `karkas.code-workspace`.
|
||||
Нажмите "Открыть Workspace", чтобы принять предложение.
|
||||
|
||||
3. **Настройте Poetry:**
|
||||
* Установите Poetry, следуя инструкциям на официальном сайте: [https://python-poetry.org/docs/](https://python-poetry.org/docs/).
|
||||
* **Для каждого пакета:**
|
||||
* Перейдите в папку пакета (например, `src/ocab_core`).
|
||||
* Перейдите в папку пакета (например, `src/karkas_core`).
|
||||
* Выполните команду `poetry install`, чтобы установить зависимости пакета.
|
||||
* Poetry создаст виртуальное окружение внутри папки пакета (`.venv`).
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
"id": "standard.info",
|
||||
"name": "Info",
|
||||
"description": "Модуль с информацией",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": false,
|
||||
"dependencies": {
|
||||
@ -50,7 +50,7 @@
|
||||
- `author`: Автор модуля.
|
||||
- `version`: Версия модуля в формате [SemVer](https://semver.org/).
|
||||
- `privileged`: Булево значение, указывающее, является ли модуль привилегированным.
|
||||
- `dependencies`: Объект, описывающий зависимости модуля от других **OCAB** модулей.
|
||||
- `dependencies`: Объект, описывающий зависимости модуля от других **Karkas** модулей.
|
||||
- `required`: Обязательные зависимости. Ключ - идентификатор модуля, значение - версия или объект `DependencyInfo`.
|
||||
- `optional`: Необязательные зависимости. Ключ - идентификатор модуля, значение - версия или объект `DependencyInfo`.
|
||||
- `pythonDependencies`: Объект, описывающий зависимости модуля от внешних Python пакетов.
|
||||
@ -80,7 +80,7 @@
|
||||
- Модуль выполняется в доверенной среде на основе RestrictedPython (это накладывает ряд ограничений).
|
||||
- Может импортировать только явно разрешенные модули, указанные в `pythonDependencies`,
|
||||
а также несколько стандартных модулей, необходимых для работы.
|
||||
- Имеет доступ к пакету `ocab_core.modules_system.public_api` для взаимодействия с ботом.
|
||||
- Имеет доступ к пакету `karkas_core.modules_system.public_api` для взаимодействия с ботом.
|
||||
|
||||
**Привилегированный режим** (`privileged: true`):
|
||||
- Модуль выполняется без ограничений.
|
||||
@ -100,7 +100,7 @@
|
||||
|
||||
## Взаимодействие между модулями
|
||||
|
||||
Модули могут взаимодействовать друг с другом через [API](../src/ocab_core/ocab_core/modules_system/public_api/__init__.py),
|
||||
Модули могут взаимодействовать друг с другом через [API](../src/karkas_core/karkas_core/modules_system/public_api/__init__.py),
|
||||
предоставляемое системой управления модулями.
|
||||
|
||||
Например, есть функция `get_module`. Она позволяет получить модуль или предоставляемые им объекты по его
|
||||
|
@ -1,16 +1,16 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"name": "OCAB Monorepo Root",
|
||||
"name": "Karkas Monorepo Root",
|
||||
"path": ".",
|
||||
},
|
||||
{
|
||||
"name": "OCAB Modules",
|
||||
"path": "src/ocab_modules"
|
||||
"name": "Karkas Blocks",
|
||||
"path": "src/karkas_blocks"
|
||||
},
|
||||
{
|
||||
"name": "OCAB Core",
|
||||
"path": "src/ocab_core"
|
||||
"name": "Karkas Core",
|
||||
"path": "src/karkas_core"
|
||||
},
|
||||
{
|
||||
"name": "Gnomik",
|
||||
|
@ -1,7 +1,7 @@
|
||||
[tool.poetry]
|
||||
name = "ocab-monorepo"
|
||||
name = "karkas-monorepo"
|
||||
version = "2.0.0"
|
||||
description = "OCAB is a modular Telegram bot"
|
||||
description = "Karkas is a modular Telegram bot"
|
||||
license = "GPL-3.0-only"
|
||||
authors = ["Семён Фомченков <s.fomchenkov@yandex.ru>"]
|
||||
maintainers = [
|
||||
@ -11,13 +11,13 @@ maintainers = [
|
||||
"Максим Слипенко <maxim@slipenko.com>"
|
||||
]
|
||||
readme = "README.md"
|
||||
repository = "https://gitflic.ru/project/armatik/ocab"
|
||||
repository = "https://gitflic.ru/project/alt-gnome/karkas"
|
||||
packages = [
|
||||
{ include = "scripts" }
|
||||
]
|
||||
|
||||
[tool.poetry.urls]
|
||||
"Bug Tracker" = "https://gitflic.ru/project/armatik/ocab/issue?status=OPEN"
|
||||
"Bug Tracker" = "https://gitflic.ru/project/alt-gnome/karkas/issue?status=OPEN"
|
||||
|
||||
[tool.poetry.scripts]
|
||||
test = 'scripts.test:main'
|
||||
|
@ -4,9 +4,9 @@ from pathlib import Path
|
||||
|
||||
def main():
|
||||
pwd = Path().cwd()
|
||||
dir_core = pwd / "src" / "ocab_core"
|
||||
dir_modules_standard = pwd / "src" / "ocab_modules" / "standard"
|
||||
dir_modules_external = pwd / "src" / "ocab_modules" / "external"
|
||||
dir_core = pwd / "src" / "karkas_core"
|
||||
dir_modules_standard = pwd / "src" / "karkas_blocks" / "standard"
|
||||
dir_modules_external = pwd / "src" / "karkas_blocks" / "external"
|
||||
|
||||
json = {
|
||||
"core": str(dir_core),
|
||||
|
@ -4,14 +4,14 @@ import os
|
||||
|
||||
DEFAULTS = {
|
||||
"description": "Очень полезный модуль",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": "false",
|
||||
}
|
||||
|
||||
|
||||
def create_module(args):
|
||||
module_dir = os.path.join("src/ocab_modules/standard", args.module_name)
|
||||
module_dir = os.path.join("src/karkas_blocks/standard", args.module_name)
|
||||
os.makedirs(module_dir, exist_ok=True)
|
||||
|
||||
module_info = {
|
||||
|
@ -6,9 +6,9 @@ COPY . /app
|
||||
|
||||
# Фикс
|
||||
|
||||
RUN sed -i '/ocab-core = {/{s/, develop = true//}' /app/src/altlinux/pyproject.toml && \
|
||||
sed -i '/ocab-modules = {/{s/, develop = true//}' /app/src/altlinux/pyproject.toml && \
|
||||
sed -i '/ocab-core = {/{s/, develop = true//}' /app/src/ocab_modules/pyproject.toml
|
||||
RUN sed -i '/karkas-core = {/{s/, develop = true//}' /app/src/altlinux/pyproject.toml && \
|
||||
sed -i '/karkas-blocks = {/{s/, develop = true//}' /app/src/altlinux/pyproject.toml && \
|
||||
sed -i '/karkas-core = {/{s/, develop = true//}' /app/src/karkas_blocks/pyproject.toml
|
||||
|
||||
WORKDIR /app/src/altlinux
|
||||
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
## Описание
|
||||
|
||||
Подготовленная версия OCAB Lite для интеграции в чат [Альт Линукс](https://t.me/alt_linux)
|
||||
Подготовленная версия Karkas Lite для интеграции в чат [Альт Линукс](https://t.me/alt_linux)
|
||||
|
||||
## Функционал
|
||||
Список OCAB-модулей используемых в боте:
|
||||
|
||||
* report - Вызов администрации чата одной командой
|
||||
* welcome - Автоматическая вариативная проверка пользователей на признаки бота или другой автоматической рекламной системы
|
||||
* help - Получение информации об OCAB Lite
|
||||
* help - Получение информации об Karkas Lite
|
||||
|
||||
## Запуск
|
||||
|
||||
|
@ -1,25 +1,25 @@
|
||||
import asyncio
|
||||
from importlib.metadata import version
|
||||
|
||||
from ocab_core import OCAB
|
||||
from ocab_modules import module_loader
|
||||
from karkas_core import Karkas
|
||||
from karkas_blocks import block_loader
|
||||
|
||||
|
||||
async def main():
|
||||
ocab = OCAB()
|
||||
await ocab.init_app(
|
||||
karkas = Karkas()
|
||||
await karkas.init_app(
|
||||
[
|
||||
module_loader("standard", "config", safe=False),
|
||||
module_loader("standard", "command_helper"),
|
||||
block_loader("standard", "config", safe=False),
|
||||
block_loader("standard", "command_helper"),
|
||||
# safe=False из-за super().__init__()
|
||||
module_loader("standard", "filters", safe=False),
|
||||
module_loader("standard", "report"),
|
||||
module_loader("standard", "welcome", safe=False),
|
||||
module_loader("standard", "help"),
|
||||
block_loader("standard", "filters", safe=False),
|
||||
block_loader("standard", "report"),
|
||||
block_loader("standard", "welcome", safe=False),
|
||||
block_loader("standard", "help"),
|
||||
],
|
||||
metainfo={"app_version": version("altlinux")},
|
||||
)
|
||||
await ocab.start()
|
||||
await karkas.start()
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
|
10
src/altlinux/poetry.lock
generated
10
src/altlinux/poetry.lock
generated
@ -1210,7 +1210,7 @@ files = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ocab-core"
|
||||
name = "karkas-core"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
optional = false
|
||||
@ -1232,10 +1232,10 @@ 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 = "ocab-modules"
|
||||
name = "karkas-blocks"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
optional = false
|
||||
@ -1247,13 +1247,13 @@ develop = true
|
||||
dash = "^2.17.1"
|
||||
dash-bootstrap-components = "^1.6.0"
|
||||
dash-extensions = "^1.0.18"
|
||||
ocab-core = {path = "../ocab_core", develop = true}
|
||||
karkas-core = {path = "../karkas_core", develop = true}
|
||||
peewee = "^3.17.6"
|
||||
pyyaml = "^6.0.1"
|
||||
|
||||
[package.source]
|
||||
type = "directory"
|
||||
url = "../ocab_modules"
|
||||
url = "../karkas_blocks"
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
|
@ -9,8 +9,8 @@ readme = "README.md"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "~3.12"
|
||||
ocab-core = { extras=["webhook"], path = "../ocab_core", develop = true }
|
||||
ocab-modules = { path = "../ocab_modules", develop = true }
|
||||
karkas-core = { extras=["webhook"], path = "../karkas_core", develop = true }
|
||||
karkas-blocks = { path = "../karkas_blocks", develop = true }
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
# OCAB Core
|
||||
# Karkas Core
|
||||
|
||||
Это ядро OCAB, содержащее базовые компоненты:
|
||||
Это ядро Karkas, содержащее базовые компоненты:
|
||||
|
||||
- Система управления модулями.
|
||||
- Логирование.
|
||||
|
@ -1 +1 @@
|
||||
from .main import OCAB
|
||||
from .main import Karkas
|
||||
|
@ -1,7 +1,7 @@
|
||||
import logging
|
||||
import traceback
|
||||
|
||||
app_logger = logging.getLogger("ocab")
|
||||
app_logger = logging.getLogger("karkas")
|
||||
log_level = logging.INFO
|
||||
|
||||
|
||||
|
@ -3,17 +3,17 @@ from typing import TYPE_CHECKING
|
||||
|
||||
from aiogram import Bot, Dispatcher
|
||||
|
||||
from ocab_core.lib import register_bot_webhook
|
||||
from ocab_core.logger import CustomLogger, log, setup_logger
|
||||
from ocab_core.modules_system import ModulesManager
|
||||
from ocab_core.modules_system.public_api import get_module
|
||||
from ocab_core.singleton import Singleton
|
||||
from karkas_core.lib import register_bot_webhook
|
||||
from karkas_core.logger import CustomLogger, log, setup_logger
|
||||
from karkas_core.modules_system import ModulesManager
|
||||
from karkas_core.modules_system.public_api import get_module
|
||||
from karkas_core.singleton import Singleton
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from ocab_modules.standard.config import IConfig
|
||||
from karkas_blocks.standard.config import IConfig
|
||||
|
||||
|
||||
class OCAB:
|
||||
class Karkas:
|
||||
def __init__(self) -> None:
|
||||
pass
|
||||
|
||||
@ -26,10 +26,10 @@ class OCAB:
|
||||
try:
|
||||
singleton.modules_manager = ModulesManager()
|
||||
|
||||
for module_loader in bot_modules:
|
||||
info = module_loader.info()
|
||||
for block_loader in bot_modules:
|
||||
info = block_loader.info()
|
||||
log(f"Loading {info.name} ({info.id}) module")
|
||||
await singleton.modules_manager.load(module_loader)
|
||||
await singleton.modules_manager.load(block_loader)
|
||||
|
||||
register_config()
|
||||
|
||||
|
@ -3,9 +3,9 @@ from pathlib import Path
|
||||
|
||||
from RestrictedPython import compile_restricted_exec
|
||||
|
||||
# from ocab_core.logger import log
|
||||
from ocab_core.modules_system.loaders.unsafe_fs_loader import UnsafeFSLoader
|
||||
from ocab_core.modules_system.safe.policy import (
|
||||
# from karkas_core.logger import log
|
||||
from karkas_core.modules_system.loaders.unsafe_fs_loader import UnsafeFSLoader
|
||||
from karkas_core.modules_system.safe.policy import (
|
||||
ALLOWED_IMPORTS,
|
||||
BUILTINS,
|
||||
RestrictedPythonPolicy,
|
||||
@ -62,9 +62,9 @@ class FSLoader(UnsafeFSLoader):
|
||||
return file_path
|
||||
|
||||
def _hook_import(self, name: str, *args, **kwargs):
|
||||
if name == "ocab_core.modules_system.public_api":
|
||||
if name == "karkas_core.modules_system.public_api":
|
||||
module = __import__(name, *args, **kwargs)
|
||||
module.__ocab_module_id__ = self.module_id
|
||||
module.__karkas_block_id__ = self.module_id
|
||||
return module
|
||||
|
||||
for key in self.allowed_python_dependencies.keys():
|
||||
@ -78,7 +78,7 @@ class FSLoader(UnsafeFSLoader):
|
||||
|
||||
module = types.ModuleType(name)
|
||||
module.__dict__.update(
|
||||
{"__builtins__": self.builtins, "__ocab_module_id__": self.module_id}
|
||||
{"__builtins__": self.builtins, "__karkas_block_id__": self.module_id}
|
||||
)
|
||||
result = compile_restricted_exec(src, "<string>", policy=RestrictedPythonPolicy)
|
||||
|
||||
|
@ -3,7 +3,7 @@ import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from ocab_core.modules_system.loaders.base import AbstractLoader, ModuleInfo
|
||||
from karkas_core.modules_system.loaders.base import AbstractLoader, ModuleInfo
|
||||
|
||||
|
||||
class UnsafeFSLoader(AbstractLoader):
|
||||
|
@ -4,7 +4,7 @@ import inspect
|
||||
import pkg_resources
|
||||
import semver
|
||||
|
||||
from ocab_core.modules_system.loaders.base import (
|
||||
from karkas_core.modules_system.loaders.base import (
|
||||
AbstractLoader,
|
||||
DependencyInfo,
|
||||
ModuleInfo,
|
||||
|
@ -1,4 +1,4 @@
|
||||
from ocab_core.logger import log
|
||||
from karkas_core.logger import log
|
||||
|
||||
from .public_api import (
|
||||
Storage,
|
||||
|
@ -6,9 +6,9 @@ from aiogram import BaseMiddleware, Router
|
||||
from aiogram.fsm.context import FSMContext
|
||||
from aiogram.fsm.storage.base import StorageKey
|
||||
|
||||
# from ocab_core.logger import log
|
||||
from ocab_core.modules_system.loaders.base import DependencyInfo
|
||||
from ocab_core.singleton import Singleton
|
||||
# from karkas_core.logger import log
|
||||
from karkas_core.modules_system.loaders.base import DependencyInfo
|
||||
from karkas_core.singleton import Singleton
|
||||
|
||||
|
||||
async def set_chat_menu_button(menu_button):
|
||||
@ -64,8 +64,8 @@ def get_module(
|
||||
|
||||
allowed_uses = None
|
||||
|
||||
if "__ocab_module_id__" in caller_globals:
|
||||
caller_module_id = caller_globals["__ocab_module_id__"]
|
||||
if "__karkas_block_id__" in caller_globals:
|
||||
caller_module_id = caller_globals["__karkas_block_id__"]
|
||||
caller_module_info = app.modules_manager.get_info_by_id(caller_module_id)
|
||||
|
||||
if caller_module_info and caller_module_info.dependencies:
|
||||
|
@ -17,8 +17,8 @@ from RestrictedPython.Guards import ( # guarded_setattr,; full_write_guard,
|
||||
safer_getattr,
|
||||
)
|
||||
|
||||
from ocab_core.logger import log
|
||||
from ocab_core.modules_system.safe.zope_guards import extra_safe_builtins
|
||||
from karkas_core.logger import log
|
||||
from karkas_core.modules_system.safe.zope_guards import extra_safe_builtins
|
||||
|
||||
|
||||
class RestrictedPythonPolicy(RestrictingNodeTransformer):
|
||||
|
@ -1,6 +1,6 @@
|
||||
#############################################################################
|
||||
#
|
||||
# Copyright (c) 2024 OCAB Team
|
||||
# Copyright (c) 2024 Karkas Team
|
||||
# Copyright (c) 2002 Zope Foundation and Contributors.
|
||||
#
|
||||
# This software includes a function derived from the software subject to the
|
||||
|
@ -1,7 +1,7 @@
|
||||
from aiogram import Bot, Dispatcher
|
||||
from aiogram.fsm.storage.memory import MemoryStorage
|
||||
|
||||
from ocab_core.modules_system import ModulesManager
|
||||
from karkas_core.modules_system import ModulesManager
|
||||
|
||||
|
||||
class SingletonMeta(type):
|
||||
|
6
src/ocab_core/poetry.lock
generated
6
src/ocab_core/poetry.lock
generated
@ -1210,7 +1210,7 @@ files = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ocab-modules"
|
||||
name = "karkas-blocks"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
optional = false
|
||||
@ -1222,13 +1222,13 @@ develop = true
|
||||
dash = "^2.17.1"
|
||||
dash-bootstrap-components = "^1.6.0"
|
||||
dash-extensions = "^1.0.18"
|
||||
ocab-core = {path = "../ocab_core", develop = true}
|
||||
karkas-core = {path = "../karkas_core", develop = true}
|
||||
peewee = "^3.17.6"
|
||||
pyyaml = "^6.0.1"
|
||||
|
||||
[package.source]
|
||||
type = "directory"
|
||||
url = "../ocab_modules"
|
||||
url = "../karkas_blocks"
|
||||
|
||||
[[package]]
|
||||
name = "packaging"
|
||||
|
@ -1,5 +1,5 @@
|
||||
[tool.poetry]
|
||||
name = "ocab-core"
|
||||
name = "karkas-core"
|
||||
version = "0.1.0"
|
||||
description = ""
|
||||
authors = ["Максим Слипенко <maxim@slipenko.com>"]
|
||||
@ -16,7 +16,7 @@ fastapi = { version = "^0.111.1", optional = true }
|
||||
hypercorn = { version = "^0.17.3", optional = true }
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
ocab-modules = { path = "../ocab_modules", develop = true }
|
||||
karkas-blocks = { path = "../karkas_blocks", develop = true }
|
||||
|
||||
[tool.poetry.extras]
|
||||
webhook = ["fastapi", "hypercorn"]
|
||||
|
@ -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.
|
||||
|
@ -1 +1 @@
|
||||
from .lib import module_loader
|
||||
from .lib import block_loader
|
||||
|
@ -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}")
|
||||
|
@ -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")
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
"id": "standard.admin",
|
||||
"name": "Admin",
|
||||
"description": "Модуль для работы с админкой",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": false,
|
||||
"dependencies": {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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": {}
|
||||
|
@ -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()
|
||||
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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]):
|
||||
|
@ -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": {
|
||||
|
@ -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
|
||||
|
@ -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):
|
||||
|
@ -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)
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
## Модуль DataBase
|
||||
|
||||
Модуль DataBase предназначен для ведения и работы с базами данных OCAB.
|
||||
Модуль DataBase предназначен для ведения и работы с базами данных Karkas.
|
||||
|
||||
Модуль содержит в себе следующие таблицы:
|
||||
|
||||
|
@ -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):
|
||||
|
@ -2,7 +2,7 @@
|
||||
"id": "standard.database",
|
||||
"name": "Database",
|
||||
"description": "Модуль для работы с БД",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": true,
|
||||
"dependencies": {}
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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")
|
||||
|
@ -2,7 +2,7 @@
|
||||
"id": "standard.filters",
|
||||
"name": "Filters",
|
||||
"description": "Модуль с фильтрами",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": true,
|
||||
"dependencies": {
|
||||
|
@ -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,
|
||||
)
|
||||
|
||||
|
@ -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": {
|
||||
|
@ -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": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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",
|
||||
|
@ -2,7 +2,7 @@
|
||||
"id": "standard.info",
|
||||
"name": "Info",
|
||||
"description": "Модуль с информацией",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": false,
|
||||
"dependencies": {
|
||||
|
@ -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
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
"id": "standard.message_processing",
|
||||
"name": "Info",
|
||||
"description": "Модуль с информацией",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": false,
|
||||
"dependencies": {
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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")
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
"id": "standard.roles",
|
||||
"name": "Roles",
|
||||
"description": "Модуль для работы с ролями",
|
||||
"author": "OCAB Team",
|
||||
"author": "Karkas Team",
|
||||
"version": "1.0.0",
|
||||
"privileged": true,
|
||||
"dependencies": {
|
||||
|
@ -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():
|
||||
|
@ -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"
|
||||
|
@ -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": "*"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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")
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
4
src/ocab_modules/poetry.lock
generated
4
src/ocab_modules/poetry.lock
generated
@ -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"
|
||||
|
@ -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"
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user