Merge voice 1 #8

Merged
KerradKerridi merged 8 commits from merge-voice-1 into master 2025-08-26 15:57:54 +00:00
5 changed files with 53 additions and 13 deletions
Showing only changes of commit 8bb098764d - Show all commits

View File

@@ -134,10 +134,23 @@ class BotDB:
self.logger.info(f"Попытка добавить пользователя в базу данных: user_id={user_id}, first_name={first_name}")
try:
self.connect()
self.cursor.execute("INSERT INTO 'our_users' ('user_id', 'first_name', 'full_name', 'username', 'is_bot', "
"'language_code', 'emoji', 'date_added', 'date_changed') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
(user_id, first_name, full_name,
username, is_bot, language_code, emoji, date_added, date_changed))
try:
# Новая схема с колонкой emoji
self.cursor.execute(
"INSERT INTO 'our_users' ('user_id', 'first_name', 'full_name', 'username', 'is_bot', "
"'language_code', 'emoji', 'date_added', 'date_changed') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
(user_id, first_name, full_name, username, is_bot, language_code, emoji, date_added, date_changed)
)
except sqlite3.OperationalError as e:
# Обратная совместимость: старая схема без колонки emoji
if 'no column named emoji' in str(e):
self.cursor.execute(
"INSERT INTO 'our_users' ('user_id', 'first_name', 'full_name', 'username', 'is_bot', "
"'language_code', 'date_added', 'date_changed') VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
(user_id, first_name, full_name, username, is_bot, language_code, date_added, date_changed)
)
else:
raise
self.conn.commit()
self.logger.info(
f"Новый пользователь добавлен в базу: user_id={user_id}, first_name={first_name}, emoji={emoji}")

View File

@@ -20,7 +20,7 @@ from helper_bot.utils.base_dependency_factory import get_global_instance
from helper_bot.utils.helper_func import get_first_name, get_text_message, send_text_message, send_photo_message, \
send_media_group_message_to_private_chat, prepare_media_group_from_middlewares, send_video_message, \
send_video_note_message, send_audio_message, send_voice_message, add_in_db_media, \
update_user_info, check_user_emoji
check_user_emoji, check_username_and_full_name
from logs.custom_logger import logger
private_router = Router()
@@ -90,8 +90,6 @@ async def handle_start_message(message: types.Message, state: FSMContext):
is_bot = message.from_user.is_bot
language_code = message.from_user.language_code
user_id = message.from_user.id
await update_user_info('love', message)
check_user_emoji(message)
# Проверяем наличие username для логирования
if not username:
@@ -106,7 +104,8 @@ async def handle_start_message(message: types.Message, state: FSMContext):
current_date = datetime.now()
date = current_date.strftime("%Y-%m-%d %H:%M:%S")
if not BotDB.user_exists(user_id):
BotDB.add_new_user_in_db(user_id, first_name, full_name, username, is_bot, language_code, date,
# Для первоначального добавления эмодзи пока не назначаем (совместимость)
BotDB.add_new_user_in_db(user_id, first_name, full_name, username, is_bot, language_code, "", date,
date)
else:
is_need_update = check_username_and_full_name(user_id, username, full_name, BotDB)

View File

@@ -4,16 +4,28 @@ import random
from datetime import datetime, timedelta
from time import sleep
import emoji
try:
import emoji as _emoji_lib
except Exception:
_emoji_lib = None
from aiogram import types
from aiogram.types import InputMediaPhoto, FSInputFile, InputMediaVideo, InputMediaAudio
from helper_bot.utils.base_dependency_factory import BaseDependencyFactory
from helper_bot.utils.base_dependency_factory import BaseDependencyFactory, get_global_instance
from logs.custom_logger import logger
bdf = get_global_instance()
BotDB = bdf.get_db()
GROUP_FOR_LOGS = bdf.settings['Telegram']['group_for_logs']
emoji_list = list(emoji.EMOJI_DATA.keys())
if _emoji_lib is not None:
emoji_list = list(_emoji_lib.EMOJI_DATA.keys())
else:
# Fallback minimal emoji set for environments without the 'emoji' package (e.g., CI tests)
emoji_list = [
"🙂", "😀", "😉", "😎", "🤖", "🦄", "🐱", "🐶", "🍀", "🔥",
"🌟", "🎉", "💡", "🚀", "🌈"
]
def safe_html_escape(text: str) -> str:
@@ -484,7 +496,7 @@ async def update_user_info(source: str, message: types.Message):
BotDB.add_new_user_in_db(user_id, first_name, full_name, username, is_bot, language_code, user_emoji, date,
date)
else:
is_need_update = check_username_and_full_name(user_id, username, full_name)
is_need_update = check_username_and_full_name(user_id, username, full_name, BotDB)
if is_need_update:
BotDB.update_username_and_full_name(user_id, username, full_name)
if source != 'voice':
@@ -499,7 +511,7 @@ async def update_user_info(source: str, message: types.Message):
def check_user_emoji(message: types.Message):
user_id = message.from_user.id
user_emoji = BotDB.check_emoji_for_user(user_id=user_id)
if user_emoji is None:
if user_emoji is None or user_emoji in ("Смайл еще не определен", "Эмоджи не определен", ""):
user_emoji = get_random_emoji()
BotDB.update_emoji_for_user(user_id=user_id, emoji=user_emoji)
return user_emoji

View File

@@ -1,4 +1,11 @@
import asyncio
import os
import sys
# Ensure project root is on sys.path for module resolution
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
if CURRENT_DIR not in sys.path:
sys.path.insert(0, CURRENT_DIR)
from helper_bot.main import start_bot
from helper_bot.utils.base_dependency_factory import get_global_instance

View File

@@ -1,3 +1,12 @@
import os
import sys
# Ensure project root is on sys.path for module resolution when running voice bot directly
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_ROOT = os.path.dirname(CURRENT_DIR)
if PROJECT_ROOT not in sys.path:
sys.path.insert(0, PROJECT_ROOT)
from aiogram import Bot, Dispatcher
from aiogram.client.default import DefaultBotProperties
from aiogram.fsm.storage.memory import MemoryStorage