Spaces:
Running
Running
# 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, "دستور شما نامعتبر است. لطفاً کد امنیتی خود را ارسال کنید یا از دستورات مجاز استفاده کنید.") | |