mirror of
https://gitflic.ru/project/alt-gnome/karkas.git
synced 2025-03-15 14:53:47 +03:00
Выполнен автоматический рефакторинг. Для тех файлов, которые не прошли flake8 - был добавлен `noqa`, чтобы в будущем исправить эти проблемы
118 lines
5.5 KiB
Python
118 lines
5.5 KiB
Python
# flake8: noqa
|
||
|
||
from aiogram import Bot, F, Router, types
|
||
|
||
from src.core.logger import log
|
||
from src.modules.external.yandexgpt.handlers import answer_to_message
|
||
from src.modules.standard.config.config import (
|
||
get_aproved_chat_id,
|
||
get_yandexgpt_in_words,
|
||
get_yandexgpt_start_words,
|
||
)
|
||
from src.modules.standard.database.db_api import *
|
||
|
||
|
||
async def chat_check(message: types.Message):
|
||
# Проверка наличия id чата в базе данных чатов
|
||
# Если чата нет в базе данных, то проверяем его в наличии в конфиге и если он там есть то добавляем его в БД
|
||
# Если чат есть в базе данных, то pass
|
||
if get_chat(message.chat.id) is None:
|
||
if message.chat.id in get_aproved_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)
|
||
# print(f"Chat added: {message.chat.id} {message.chat.title}")
|
||
await log(f"Chat added: {message.chat.id} {message.chat.title}")
|
||
else:
|
||
# print(f"Chat not in approve list: {message.chat.id} {message.chat.title}")
|
||
await 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}")
|
||
await log(f"Chat updated: {message.chat.id} {message.chat.title}")
|
||
else:
|
||
# print(f"Chat already exists: {message.chat.id} {message.chat.title}")
|
||
await 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,
|
||
)
|
||
# print(f"User added: {message.from_user.id} {message.from_user.first_name} {message.from_user.last_name}")
|
||
await log(f"User added: {message.from_user.id} {current_user_name}")
|
||
else:
|
||
# print(f"User already exists: {message.from_user.id} {message.from_user.first_name} {message.from_user.last_name} {message.from_user.username}")
|
||
await 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)
|
||
# print(f"User updated: {message.from_user.id} {message.from_user.first_name} {message.from_user.last_name}")
|
||
await 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)
|
||
# print(f"User updated: {message.from_user.id} {message.from_user.username}")
|
||
await 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())
|
||
):
|
||
# print("message_processing")
|
||
await 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:
|
||
# print("message_processing")
|
||
await log("message_processing")
|
||
await answer_to_message(message, bot)
|
||
|
||
|
||
router = Router()
|
||
# Если сообщение содержит текст то вызывается функция message_processing
|
||
router.message.register(message_processing, F.text)
|