some fix
This commit is contained in:
141
database/db.py
141
database/db.py
@@ -100,27 +100,8 @@ class BotDB:
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
# TODO: Deprecated. Остался только в voice боте, удалить и оттуда
|
||||
def get_error_message_from_db(self, id: int):
|
||||
"""
|
||||
@deprecated
|
||||
Функция для запроса к базе данных и получения сообщений ошибки. В аргументы передаются:
|
||||
id - идентификатор ошибки
|
||||
"""
|
||||
# Подключаемся к базе
|
||||
try:
|
||||
self.connect()
|
||||
self.cursor.execute(f"SELECT * FROM error_messages WHERE id=?", (id,))
|
||||
response_from_database = str(self.cursor.fetchone()[1])
|
||||
return response_from_database
|
||||
except sqlite3.Error as error:
|
||||
self.logger.error(f"Ошибка при получении сообщения об ошибка voice_bot: {error}")
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
def add_new_user_in_db(self, user_id: int, first_name: str, full_name: str, username: str, is_bot: bool,
|
||||
language_code: str, date_added: str,
|
||||
date_changed: str):
|
||||
language_code: str, emoji: str, date_added: str, date_changed: str):
|
||||
"""
|
||||
Добавляет нового пользователя в базу данных.
|
||||
|
||||
@@ -131,6 +112,7 @@ class BotDB:
|
||||
username (str): Username пользователя в Telegram.
|
||||
is_bot (bool): Флаг, указывающий, является ли пользователь ботом.
|
||||
language_code (str): Код языка пользователя.
|
||||
emoji (str): Эмодзи закрепленная за пользователем
|
||||
date_added (str): Дата добавления пользователя в базу.
|
||||
date_changed (str): Дата последнего изменения данных пользователя.
|
||||
|
||||
@@ -142,11 +124,12 @@ class BotDB:
|
||||
try:
|
||||
self.connect()
|
||||
self.cursor.execute("INSERT INTO 'our_users' ('user_id', 'first_name', 'full_name', 'username', 'is_bot', "
|
||||
"'language_code', 'date_added', 'date_changed') VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
|
||||
"'language_code', 'emoji', 'date_added', 'date_changed') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
||||
(user_id, first_name, full_name,
|
||||
username, is_bot, language_code, date_added, date_changed))
|
||||
username, is_bot, language_code, emoji, date_added, date_changed))
|
||||
self.conn.commit()
|
||||
self.logger.info(f"Новый пользователь добавлен в базу: user_id={user_id}, first_name={first_name}")
|
||||
self.logger.info(
|
||||
f"Новый пользователь добавлен в базу: user_id={user_id}, first_name={first_name}, emoji={emoji}")
|
||||
return None
|
||||
except sqlite3.Error as error:
|
||||
self.logger.error(f"Ошибка при добавлении пользователя в базу: {error}. "
|
||||
@@ -675,15 +658,15 @@ class BotDB:
|
||||
def update_date_for_user(self, date: str, user_id: int):
|
||||
"""
|
||||
#TODO: Не возвращается ошибка sqlite3. Error. Тест не перехватывает. Возвращается no such table: our_users
|
||||
Обновляет дату последнего изменения данных пользователя в базе.
|
||||
Обновляет дату последнего изменения данных пользователя в базе
|
||||
|
||||
Args:
|
||||
date (str): Новая дата изменения.
|
||||
user_id (int): Идентификатор пользователя в Telegram.
|
||||
date (str): Новая дата изменения
|
||||
user_id (int): Идентификатор пользователя в Telegram
|
||||
|
||||
Returns:
|
||||
None: Если обновление прошло успешно.
|
||||
sqlite3. Error: Если произошла ошибка при выполнении запроса.
|
||||
None: Если обновление прошло успешно
|
||||
sqlite3. Error: Если произошла ошибка при выполнении запроса
|
||||
"""
|
||||
self.logger.info(f"Запуск функции update_date_for_user: user_id={user_id}, date={date}")
|
||||
try:
|
||||
@@ -699,6 +682,106 @@ class BotDB:
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
def check_emoji(self, emoji: str):
|
||||
"""
|
||||
Проверяет, есть ли уже такой emoji в таблице.
|
||||
|
||||
Args:
|
||||
emoji: emoji для проверки.
|
||||
|
||||
Returns:
|
||||
True, если эмодзи уже есть, иначе False.
|
||||
|
||||
Raises:
|
||||
None: В случае ошибки возвращается None
|
||||
"""
|
||||
self.logger.info(f"Запуск функции check_emoji: emoji={emoji}")
|
||||
try:
|
||||
self.connect()
|
||||
self.cursor.execute("SELECT 1 FROM our_users WHERE emoji = ?", (emoji,))
|
||||
result = self.cursor.fetchone()
|
||||
return bool(result)
|
||||
except sqlite3.Error as error:
|
||||
self.logger.error(f"Ошибка проверки эмодзи в базе: {error}")
|
||||
return None
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
def update_emoji_for_user(self, user_id: int, emoji: str):
|
||||
"""
|
||||
Обновляет эмодзи для пользователя в базе если его ранее не было установлено
|
||||
|
||||
Args:
|
||||
user_id (int): Идентификатор пользователя в Telegram
|
||||
emoji (str): Эмодзи пользователя
|
||||
|
||||
Returns:
|
||||
None: Если обновление прошло успешно
|
||||
sqlite3. Error: Если произошла ошибка при выполнении запроса
|
||||
"""
|
||||
self.logger.info(f"Запуск функции update_date_for_user: user_id={user_id}, emoji={emoji}")
|
||||
try:
|
||||
self.connect()
|
||||
self.cursor.execute("UPDATE our_users SET emoji = ? WHERE user_id = ?",
|
||||
(emoji, user_id,))
|
||||
self.conn.commit()
|
||||
self.logger.info(f"Эмоджи обновлен для пользователя: user_id={user_id}")
|
||||
return None
|
||||
except sqlite3.Error as error:
|
||||
self.logger.error(f"Ошибка обновления эмодзи для пользователя: {error}")
|
||||
return error
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
def check_emoji_for_user(self, user_id: int):
|
||||
"""
|
||||
Проверяет, есть ли уже у пользователя назначенный emoji.
|
||||
|
||||
Args:
|
||||
user_id: user_id пользователя.
|
||||
|
||||
Returns:
|
||||
True, если эмодзи такого нет, иначе False.
|
||||
|
||||
Raises:
|
||||
None: В случае ошибки возвращается None
|
||||
"""
|
||||
self.logger.info(f"Запуск функции check_emoji_for_user: user_id={user_id}")
|
||||
try:
|
||||
self.connect()
|
||||
self.cursor.execute("SELECT emoji FROM our_users WHERE user_id = ?", (user_id,))
|
||||
result = self.cursor.fetchone()[0]
|
||||
return result
|
||||
except sqlite3.Error as error:
|
||||
self.logger.error(f"Ошибка проверки эмодзи в базе: {error}")
|
||||
return None
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
def refresh_listen_audio(self, user_id: int):
|
||||
"""
|
||||
Очищает всю информацию о прослушанных аудио пользователем
|
||||
|
||||
Args:
|
||||
user_id: user_id пользователя.
|
||||
|
||||
Returns:
|
||||
None - если все очищено успешно
|
||||
|
||||
Raises:
|
||||
error: В случае ошибки возвращается error
|
||||
"""
|
||||
self.logger.info(f"Запуск функции check_emoji_for_user: user_id={user_id}")
|
||||
try:
|
||||
self.connect()
|
||||
self.cursor.execute("DELETE FROM listen_audio_users WHERE user_id = ?", (user_id,))
|
||||
return None
|
||||
except sqlite3.Error as error:
|
||||
self.logger.error(f"Ошибка проверки эмодзи в базе: {error}")
|
||||
return error
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
def is_admin(self, user_id: int):
|
||||
"""
|
||||
Проверяет, является ли пользователь администратором.
|
||||
@@ -719,7 +802,7 @@ class BotDB:
|
||||
result = self.cursor.fetchone()
|
||||
return bool(result)
|
||||
except sqlite3.Error as error:
|
||||
self.logger.error(f"Ошибка добавления сообщения в базу данных: {error}")
|
||||
self.logger.error(f"Ошибка проверки прав пользователя админа: {error}")
|
||||
return None
|
||||
finally:
|
||||
self.close()
|
||||
|
||||
Reference in New Issue
Block a user