File size: 2,673 Bytes
3e8a166
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 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, "دستور شما نامعتبر است. لطفاً کد امنیتی خود را ارسال کنید یا از دستورات مجاز استفاده کنید.")