add blacklist

This commit is contained in:
2024-07-01 20:42:48 +03:00
parent 9a80c2b902
commit 908682d05a
2 changed files with 103 additions and 2 deletions

71
db.py
View File

@@ -1,7 +1,10 @@
import datetime
import sqlite3
import configparser
import os
import sys
import logging
from logging.handlers import RotatingFileHandler
config_path = os.path.join(sys.path[0], 'settings.ini')
config = configparser.ConfigParser()
@@ -9,6 +12,34 @@ config.read(config_path)
LOGS = config.getboolean('Settings', 'logs')
IMPORTANT_LOGS = config.get('Telegram', 'important_logs')
# Инициализация логгера
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# Формат записи логов
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(filename)s - %(lineno)d - %(message)s')
# Получение сегодняшней даты для имени файла
today = datetime.date.today().strftime('%Y-%m-%d')
filename = f'helper_bot_{today}.log'
# Создание обработчика для файла логов
file_handler = RotatingFileHandler(
filename,
mode='a',
maxBytes=10 * 1024 * 1024, # Максимальный размер файла (10 МБ)
backupCount=3 # Количество резервных файлов
)
file_handler.setFormatter(formatter)
# Добавление обработчика к логгеру
logger.addHandler(file_handler)
# Добавление стандартного обработчика
# чтобы сообщения также отображались на консоли
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
class BotDB:
@@ -200,7 +231,45 @@ class BotDB:
except sqlite3.Error as error:
print(error)
def get_users_blacklist(self):
"""Возвращает список пользователей в черном списке"""
try:
result = self.cursor.execute("SELECT user_id, user_name FROM `blacklist`")
fetch_all = result.fetchall()
list_of_users = {}
for i in fetch_all:
list_of_users[i[0]] = i[1]
return list_of_users
except sqlite3.Error as error:
print(error)
def get_blacklist_users_by_filters(self):
"""Возвращает список пользователей в черном списке по фильтру"""
return None
def set_user_blacklist(self, user_id, user_name=None, message_for_user=None, date_to_unban=None):
"""Добавляет пользователя в черный список"""
try:
result = self.cursor.execute("INSERT INTO 'blacklist' ('user_id', 'user_name',"
" 'message_for_user', 'date_to_unban') VALUES (?, ?, ?, ?)",
(user_id, user_name, message_for_user, date_to_unban,))
return self.conn.commit()
except sqlite3.Error as error:
print(error)
def delete_user_blacklist(self, user_id):
"""Удаляет пользователя из черного списка"""
try:
#TODO: Функция всегда возвращает true, даже если такого id нет в таблице
self.cursor.execute("DELETE FROM blacklist WHERE user_id = ?", (user_id,))
self.conn.commit()
logger.info(f"User with ID {user_id} successfull delete.")
return True
except sqlite3.Error as error:
logger.error(f"Error delete user with ID {user_id} from blacklist table: {error}")
return False
def close(self):
"""Закрываем соединение с БД"""
self.conn.close()