With buttons for bunned

parent e4130f01
......@@ -4,6 +4,7 @@ from aiogram.types import ChatMemberUpdated, Message, InlineKeyboardButton, Inli
from aiogram.exceptions import AiogramError
from itertools import chain
import os
import atexit
from dotenv import load_dotenv
from aiogram.filters import Command
import logging
......@@ -12,7 +13,7 @@ from aiogram.types import ChatMemberUpdated, Message, BotCommand
from spam_keywords import is_spam, SPAM_KEYWORDS
from symbol_utils import has_mixed_layout, is_arabic_name, normalize_text_to_infinitive
from sqlite_tools import create_db, add_user, user_exists, ban_user, is_user_banned
from sqlite_tools import create_db, add_user, user_exists, ban_user, is_user_banned, close_db
import sqlite3
......@@ -159,6 +160,22 @@ async def welcome_new_user(event: ChatMemberUpdated):
try:
await bot.ban_chat_member(event.chat.id, new_user.id)
ban_user(new_user.id, new_user.first_name, new_user.last_name, new_user.username, "Spam detected in name")
# Создаем кнопку для разбанивания
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(text="🔓 Разбанить", callback_data=f"unban_{new_user.id}")]
]
)
# Отправляем сообщение с кнопкой в группу логов
await bot.send_message(
chat_id=log_chat_id,
text=f"❌ User <b>{new_user.id}</b> has been banned due to spam detected in name.",
reply_markup=keyboard,
parse_mode="HTML"
)
logger.info(f"User {new_user.first_name} ({new_user.id}) banned due to spam detected in name.", extra={"chat_id": event.chat_id})
return
......@@ -173,6 +190,22 @@ async def welcome_new_user(event: ChatMemberUpdated):
try:
await bot.ban_chat_member(event.chat.id, new_user.id)
ban_user(new_user.id, new_user.first_name, new_user.last_name, new_user.username, "Arabic name detected")
# Создаем кнопку для разбанивания
keyboard = InlineKeyboardMarkup(
inline_keyboard=[
[InlineKeyboardButton(text="🔓 Разбанить", callback_data=f"unban_{new_user.id}")]
]
)
# Отправляем сообщение с кнопкой в группу логов
await bot.send_message(
chat_id=log_chat_id,
text=f"❌ User <b>{new_user.id}</b> has been banned due to Arabic name.",
reply_markup=keyboard,
parse_mode="HTML"
)
logger.info(f"User {new_user.first_name} ({new_user.id}) banned due to Arabic name.", extra={"chat_id": event.chat_id})
return
......@@ -437,4 +470,5 @@ async def main():
if __name__ == "__main__":
create_db() # Создание базы данных и таблиц
atexit.register(close_db)
asyncio.run(main())
# Функция для создания базы данных и таблиц
import sqlite3
import os
from dotenv import load_dotenv
db_path = os.getenv("DB_PATH")
def create_db():
# Загрузка переменных из файла .env
load_dotenv()
db_path = os.getenv("DB_PATH")# вернуть
# Глобальные переменные
conn = None
cursor = None
def create_db():
# Подключаемся к базе данных (если она не существует, она будет создана)
global conn, cursor
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
......@@ -39,13 +47,19 @@ def create_db():
conn.commit()
conn.close()
#conn.close()
def close_db():
"""Закрытие соединения"""
global conn
if conn:
conn.close()
# Функция для добавления пользователя в базу данных
def add_user(user_id, first_name, last_name, username):
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
#conn = sqlite3.connect(db_path)
#cursor = conn.cursor()
cursor.execute('''
INSERT INTO users (id, first_name, last_name, username)
......@@ -53,23 +67,23 @@ def add_user(user_id, first_name, last_name, username):
''', (user_id, first_name, last_name, username))
conn.commit()
conn.close()
#conn.close()
# Функция для проверки, есть ли пользователь в базе данных
def user_exists(user_id):
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
#conn = sqlite3.connect(db_path)
#cursor = conn.cursor()
cursor.execute('SELECT id FROM users WHERE id = ?', (user_id,))
result = cursor.fetchone()
conn.close()
#conn.close()
return result is not None
# Функция для перемещения пользователя в таблицу забаненных
def ban_user(user_id, first_name, last_name, username, ban_reason):
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
#conn = sqlite3.connect(db_path)
#cursor = conn.cursor()
# Добавляем в таблицу забаненных
cursor.execute('''
......@@ -81,14 +95,14 @@ def ban_user(user_id, first_name, last_name, username, ban_reason):
cursor.execute('DELETE FROM users WHERE id = ?', (user_id,))
conn.commit()
conn.close()
#conn.close()
def is_user_banned(user_id):
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
#conn = sqlite3.connect(db_path)
#cursor = conn.cursor()
cursor.execute('SELECT id FROM banned_users WHERE id = ?', (user_id,))
result = cursor.fetchone()
conn.close()
#conn.close()
return result is not None
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment