Aktualizovat telegram_bot/bot.py
This commit is contained in:
parent
3f46dfbb0a
commit
78278ba469
@ -7,14 +7,14 @@ from telegram.ext import Application, MessageHandler, filters, CommandHandler, C
|
||||
from dotenv import load_dotenv
|
||||
import mysql.connector
|
||||
|
||||
|
||||
# Загрузка переменных окружения из .env
|
||||
# Load environment variables from .env file
|
||||
load_dotenv()
|
||||
TOKEN = os.getenv("TOKEN")
|
||||
|
||||
# Путь к модели
|
||||
# Path to the model
|
||||
MODEL_PATH = "./hate_speech_model/final_model"
|
||||
|
||||
# Database configuration
|
||||
db_config = {
|
||||
"host": "mysql",
|
||||
"user": "root",
|
||||
@ -23,7 +23,7 @@ db_config = {
|
||||
}
|
||||
|
||||
def save_violator(username, message):
|
||||
"""Сохраняет нарушителя в базу данных"""
|
||||
"""Saves the violator's message to the database"""
|
||||
try:
|
||||
conn = mysql.connector.connect(**db_config)
|
||||
cursor = conn.cursor()
|
||||
@ -33,10 +33,9 @@ def save_violator(username, message):
|
||||
cursor.close()
|
||||
conn.close()
|
||||
except mysql.connector.Error as err:
|
||||
logging.error(f"Ошибка MySQL: {err}")
|
||||
logging.error(f"MySQL error: {err}")
|
||||
|
||||
|
||||
# Настройка логирования
|
||||
# Logging setup
|
||||
logging.basicConfig(
|
||||
format="%(asctime)s - %(levelname)s - %(message)s",
|
||||
level=logging.INFO,
|
||||
@ -46,13 +45,13 @@ logging.basicConfig(
|
||||
]
|
||||
)
|
||||
|
||||
# Загрузка модели и токенизатора
|
||||
# Load tokenizer and model
|
||||
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
||||
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
|
||||
model = AutoModelForSequenceClassification.from_pretrained(MODEL_PATH).to(device)
|
||||
|
||||
def classify_text(text):
|
||||
"""Функция для классификации текста"""
|
||||
"""Classifies the input text"""
|
||||
model.eval()
|
||||
inputs = tokenizer(text, return_tensors="pt", truncation=True, padding="max_length", max_length=128).to(device)
|
||||
|
||||
@ -62,35 +61,35 @@ def classify_text(text):
|
||||
logits = outputs.logits
|
||||
pred = torch.argmax(logits, dim=-1).item()
|
||||
|
||||
return "🛑 Nenávistná reč" if pred == 1 else "✅ OK"
|
||||
return "🛑 Hate speech detected" if pred == 1 else "✅ OK"
|
||||
|
||||
async def check_message(update: Update, context: CallbackContext):
|
||||
"""Проверяет сообщения в чате и реагирует на токсичные сообщения"""
|
||||
"""Checks chat messages and reacts to toxic content"""
|
||||
message_text = update.message.text
|
||||
result = classify_text(message_text)
|
||||
|
||||
if result == "🛑 Nenávistná reč":
|
||||
if result == "🛑 Hate speech detected":
|
||||
username = update.message.from_user.username or "unknown"
|
||||
await update.message.reply_text("⚠️ Upozornenie! Dodržiavajte kultúru komunikácie.")
|
||||
await update.message.delete() # Автоматическое удаление токсичных сообщений
|
||||
await update.message.reply_text("⚠️ Warning! Please maintain respectful communication.")
|
||||
await update.message.delete() # Automatically deletes toxic message
|
||||
|
||||
# Логирование токсичного сообщения
|
||||
logging.warning(f"Toxická správa od {update.message.from_user.username}: {message_text}")
|
||||
# Log the toxic message
|
||||
logging.warning(f"Toxic message from {username}: {message_text}")
|
||||
save_violator(username, message_text)
|
||||
|
||||
async def start(update: Update, context: CallbackContext):
|
||||
"""Отправляет приветственное сообщение при запуске бота"""
|
||||
await update.message.reply_text("Ahoj! Sledujem kultúru komunikácie v chate!")
|
||||
"""Sends welcome message on /start"""
|
||||
await update.message.reply_text("Hi! I'm monitoring the chat for hate speech!")
|
||||
|
||||
def main():
|
||||
"""Запуск бота"""
|
||||
"""Starts the bot"""
|
||||
app = Application.builder().token(TOKEN).build()
|
||||
|
||||
# Добавление обработчиков команд и сообщений
|
||||
# Register command and message handlers
|
||||
app.add_handler(CommandHandler("start", start))
|
||||
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, check_message))
|
||||
|
||||
# Запуск бота
|
||||
# Start polling
|
||||
app.run_polling()
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
Reference in New Issue
Block a user