From 5513481330d511a740c67ff068247eb79d84eaf0 Mon Sep 17 00:00:00 2001 From: Maxim Slipenko Date: Tue, 20 Aug 2024 17:29:00 +0300 Subject: [PATCH] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=20standard.message=5Fprocessing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../standard/message_processing/README.md | 14 -- .../standard/message_processing/__init__.py | 1 - .../standard/message_processing/info.json | 15 -- .../message_processing/message_api.py | 155 ------------------ 4 files changed, 185 deletions(-) delete mode 100644 src/karkas_blocks/karkas_blocks/standard/message_processing/README.md delete mode 100644 src/karkas_blocks/karkas_blocks/standard/message_processing/__init__.py delete mode 100644 src/karkas_blocks/karkas_blocks/standard/message_processing/info.json delete mode 100644 src/karkas_blocks/karkas_blocks/standard/message_processing/message_api.py diff --git a/src/karkas_blocks/karkas_blocks/standard/message_processing/README.md b/src/karkas_blocks/karkas_blocks/standard/message_processing/README.md deleted file mode 100644 index 86f6f15..0000000 --- a/src/karkas_blocks/karkas_blocks/standard/message_processing/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Модуль Message Processing - -Модуль `message_processing` обрабатывает все входящие сообщения. - -## Функциональность - -- Проверка чата и пользователя на наличие в базе данных. -- Обновление информации о чате и пользователе. -- Добавление статистики сообщений. -- Передача сообщения модулю `yandexgpt`, если оно соответствует условиям. - -## Использование - -Модуль автоматически обрабатывает все входящие сообщения. diff --git a/src/karkas_blocks/karkas_blocks/standard/message_processing/__init__.py b/src/karkas_blocks/karkas_blocks/standard/message_processing/__init__.py deleted file mode 100644 index 90d8eda..0000000 --- a/src/karkas_blocks/karkas_blocks/standard/message_processing/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .message_api import module_init diff --git a/src/karkas_blocks/karkas_blocks/standard/message_processing/info.json b/src/karkas_blocks/karkas_blocks/standard/message_processing/info.json deleted file mode 100644 index 6c72bed..0000000 --- a/src/karkas_blocks/karkas_blocks/standard/message_processing/info.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "id": "standard.message_processing", - "name": "Info", - "description": "Модуль с информацией", - "author": "Karkas Team", - "version": "1.0.0", - "privileged": false, - "dependencies": { - "required": { - "standard.roles": "^1.0.0", - "standard.database": "^1.0.0", - "standard.command_helper": "^1.0.0" - } - } -} diff --git a/src/karkas_blocks/karkas_blocks/standard/message_processing/message_api.py b/src/karkas_blocks/karkas_blocks/standard/message_processing/message_api.py deleted file mode 100644 index 496f454..0000000 --- a/src/karkas_blocks/karkas_blocks/standard/message_processing/message_api.py +++ /dev/null @@ -1,155 +0,0 @@ -# flake8: noqa - -from typing import TYPE_CHECKING - -from aiogram import Bot, F, Router, types - -from karkas_core.modules_system.public_api import get_module, log, register_router - -if TYPE_CHECKING: - from karkas_blocks.standard.config import IConfig - -config: "IConfig" = get_module("standard.config", "config") - - -def get_yandexgpt_start_words(): - return config.get("yandexgpt::startword").split(" | ") - - -def get_yandexgpt_in_words(): - return config.get("yandexgpt::inword").split(" | ") - - -chat_not_in_approve = get_module("standard.filters", ["chat_not_in_approve"]) - -answer_to_message = get_module("external.yandexgpt", "answer_to_message") - -( - get_chat, - add_chat, - get_user, - add_user, - get_user_name, - change_user_name, - get_user_tag, - change_user_tag, - update_chat_all_stat, - update_user_all_stat, - add_message, -) = get_module( - "standard.database", - [ - "db_api.get_chat", - "db_api.add_chat", - "db_api.get_user", - "db_api.add_user", - "db_api.get_user_name", - "db_api.change_user_name", - "db_api.get_user_tag", - "db_api.change_user_tag", - "db_api.update_chat_all_stat", - "db_api.update_user_all_stat", - "db_api.add_message", - ], -) - - -async def chat_check(message: types.Message): - # Проверка наличия id чата в базе данных чатов - # Если чата нет в базе данных, то проверяем его в наличии в конфиге и если он там есть то добавляем его в БД - # Если чат есть в базе данных, то pass - if get_chat(message.chat.id) is None: - if not chat_not_in_approve(message): - # print(f"Chat in approve list: {message.chat.id} {message.chat.title}") - log(f"Chat in approve list: {message.chat.id} {message.chat.title}") - add_chat(message.chat.id, message.chat.title) - # print(f"Chat added: {message.chat.id} {message.chat.title}") - log(f"Chat added: {message.chat.id} {message.chat.title}") - else: - # print(f"Chat not in approve list: {message.chat.id} {message.chat.title}") - log(f"Chat not in approve list: {message.chat.id} {message.chat.title}") - pass - else: - # Проверяем обновление названия чата - chat = get_chat(message.chat.id) - if chat.chat_name != message.chat.title: - chat.chat_name = message.chat.title - chat.save() - # print(f"Chat updated: {message.chat.id} {message.chat.title}") - log(f"Chat updated: {message.chat.id} {message.chat.title}") - else: - # print(f"Chat already exists: {message.chat.id} {message.chat.title}") - log(f"Chat already exists: {message.chat.id} {message.chat.title}") - pass - - -async def user_check(message: types.Message): - # Проверка наличия id пользователя в базе данных пользователей - # Если пользователя нет в базе данных, то добавляем его - # Если пользователь есть в базе данных, то pass - current_user_name = "" - if message.from_user.last_name is None: - current_user_name = message.from_user.first_name - else: - current_user_name = ( - message.from_user.first_name + " " + message.from_user.last_name - ) - - if get_user(message.from_user.id) is None: - add_user( - message.from_user.id, - message.from_user.first_name, - message.from_user.last_name, - message.from_user.username, - ) - log(f"User added: {message.from_user.id} {current_user_name}") - else: - log( - f"User already exists: {message.from_user.id} {current_user_name} {message.from_user.username}" - ) - # Проверяем обновление имени пользователя - if get_user_name(message.from_user.id) != current_user_name: - change_user_name(message.from_user.id, current_user_name) - log(f"User name updated: {message.from_user.id} {current_user_name}") - # Проверяем обновление username пользователя - if get_user_tag(message.from_user.id) != message.from_user.username: - change_user_tag(message.from_user.id, message.from_user.username) - log( - f"User tag updated: {message.from_user.id} {message.from_user.username}" - ) - pass - - -async def add_stats(message: types.Message): - # Добавляем пользователю и чату статистику - update_chat_all_stat(message.chat.id) - update_user_all_stat(message.from_user.id) - - -async def message_processing(message: types.Message, bot: Bot): - await chat_check(message) - await user_check(message) - await add_stats(message) - - add_message(message) - # Если сообщение в начале содержит слово из списка или внутри сообщения содержится слово из списка или сообщение отвечает на сообщение бота - - if (message.text.split(" ")[0] in get_yandexgpt_start_words()) or ( - any(word in message.text for word in get_yandexgpt_in_words()) - ): - log("message_processing") - await answer_to_message(message, bot) - - elif message.reply_to_message is not None: - if message.reply_to_message.from_user.is_bot: - log("message_processing") - await answer_to_message(message, bot) - - -router = Router() -# Если сообщение содержит текст то вызывается функция message_processing -router.message.register(message_processing, F.text) - - -async def module_init(): - register_router(router)