# management/telebot.py # -*- coding: utf-8 -*- import logging from django.contrib.auth import get_user_model from django.conf import settings from .models import TelegramUser import requests import json logger = logging.getLogger(__name__) CustomUser = get_user_model() def send_telegram_message(chat_id, message): """ ارسال پیام به یک کاربر تلگرام با استفاده از API. """ TOKEN = settings.TELEGRAM_BOT_TOKEN API_URL = f"https://api.telegram.org/bot{TOKEN}/sendMessage" payload = { 'chat_id': chat_id, 'text': message } try: response = requests.post(API_URL, json=payload) response.raise_for_status() logger.info(f"Message sent to chat ID {chat_id}: {message}") except requests.exceptions.RequestException as e: logger.error(f"Error sending message to Telegram: {e}") def process_telegram_message(update): """ پردازش پیام‌های ورودی از تلگرام. """ message_data = update.get('message') if not message_data: return chat_id = message_data['chat']['id'] text = message_data.get('text', '') # بررسی اگر متن یک کد امنیتی است # اینجا یک شرط برای طول توکن میگذاریم تا از بررسی پیام‌های کوتاه جلوگیری شود if 10 < len(text) < 50: # ارسال کد به سرور برای تأیید payload = { 'token': text, 'chat_id': chat_id } try: # URL باید به آدرس واقعی API در سرور شما اشاره کند response = requests.post('http://127.0.0.1:8000/api/telegram/verify-token/', json=payload) result = response.json() send_telegram_message(chat_id, result['message']) except requests.exceptions.RequestException as e: logger.error(f"Error communicating with Django server: {e}") send_telegram_message(chat_id, "متاسفم، در حال حاضر نمی‌توانم درخواست شما را پردازش کنم. لطفاً بعداً امتحان کنید.") elif text == '/start': send_telegram_message(chat_id, "سلام، برای همگام‌سازی حساب خود، لطفاً یک کد امنیتی از پنل کاربری خود دریافت کرده و آن را برای من ارسال کنید.") else: send_telegram_message(chat_id, "دستور شما نامعتبر است. لطفاً کد امنیتی خود را ارسال کنید یا از دستورات مجاز استفاده کنید.")