mirror of
https://gitflic.ru/project/alt-gnome/karkas.git
synced 2024-12-24 00:33:06 +03:00
удален блок standard.message_processing
This commit is contained in:
parent
8512b3300b
commit
5513481330
@ -1,14 +0,0 @@
|
|||||||
# Модуль Message Processing
|
|
||||||
|
|
||||||
Модуль `message_processing` обрабатывает все входящие сообщения.
|
|
||||||
|
|
||||||
## Функциональность
|
|
||||||
|
|
||||||
- Проверка чата и пользователя на наличие в базе данных.
|
|
||||||
- Обновление информации о чате и пользователе.
|
|
||||||
- Добавление статистики сообщений.
|
|
||||||
- Передача сообщения модулю `yandexgpt`, если оно соответствует условиям.
|
|
||||||
|
|
||||||
## Использование
|
|
||||||
|
|
||||||
Модуль автоматически обрабатывает все входящие сообщения.
|
|
@ -1 +0,0 @@
|
|||||||
from .message_api import module_init
|
|
@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -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)
|
|
Loading…
Reference in New Issue
Block a user