Spaces:
Running
Running
Update gitignore and telegram handlers, add pending transfers data
Browse files- Enhanced .gitignore for better file exclusion
- Updated telegram_handlers.py with improvements
- Added pending_transfers.json data file
- .gitignore +1 -0
- telegram_handlers.py +18 -1
- transfers/pending_transfers.json +13 -1
.gitignore
CHANGED
|
@@ -5,3 +5,4 @@ __pycache__/
|
|
| 5 |
venv/
|
| 6 |
.python-version
|
| 7 |
.DS_Store
|
|
|
|
|
|
| 5 |
venv/
|
| 6 |
.python-version
|
| 7 |
.DS_Store
|
| 8 |
+
rest.http
|
telegram_handlers.py
CHANGED
|
@@ -1,5 +1,7 @@
|
|
| 1 |
import httpx
|
| 2 |
import json
|
|
|
|
|
|
|
| 3 |
from config import TELEGRAM_URL
|
| 4 |
from ai_service import get_ai_response
|
| 5 |
from database import db_manager
|
|
@@ -24,6 +26,17 @@ def _sanitize_telegram_text(text: str) -> str:
|
|
| 24 |
return cleaned.strip()
|
| 25 |
|
| 26 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
async def telegram_webhook(data: WebhookData):
|
| 28 |
try:
|
| 29 |
if not data.message or not data.message.text:
|
|
@@ -54,10 +67,14 @@ async def telegram_webhook(data: WebhookData):
|
|
| 54 |
if not prepared_text:
|
| 55 |
prepared_text = "Sorry, I couldn't generate a response. Please try again."
|
| 56 |
|
| 57 |
-
|
|
|
|
|
|
|
|
|
|
| 58 |
payload = {
|
| 59 |
"chat_id": telegram_id,
|
| 60 |
"text": final_text if final_text.strip() else ".",
|
|
|
|
| 61 |
}
|
| 62 |
|
| 63 |
|
|
|
|
| 1 |
import httpx
|
| 2 |
import json
|
| 3 |
+
import html
|
| 4 |
+
import re
|
| 5 |
from config import TELEGRAM_URL
|
| 6 |
from ai_service import get_ai_response
|
| 7 |
from database import db_manager
|
|
|
|
| 26 |
return cleaned.strip()
|
| 27 |
|
| 28 |
|
| 29 |
+
def _format_telegram_message(text: str) -> str:
|
| 30 |
+
"""Convert **bold** to <b>bold</b> for HTML parse mode."""
|
| 31 |
+
if not text:
|
| 32 |
+
return text
|
| 33 |
+
# First escape HTML to prevent injection
|
| 34 |
+
escaped = html.escape(text, quote=False)
|
| 35 |
+
# Replace **text** with <b>text</b> (non-greedy)
|
| 36 |
+
formatted = re.sub(r'\*\*(.*?)\*\*', r'<b>\1</b>', escaped)
|
| 37 |
+
return formatted
|
| 38 |
+
|
| 39 |
+
|
| 40 |
async def telegram_webhook(data: WebhookData):
|
| 41 |
try:
|
| 42 |
if not data.message or not data.message.text:
|
|
|
|
| 67 |
if not prepared_text:
|
| 68 |
prepared_text = "Sorry, I couldn't generate a response. Please try again."
|
| 69 |
|
| 70 |
+
# Format for HTML parse mode
|
| 71 |
+
formatted_text = _format_telegram_message(prepared_text)
|
| 72 |
+
|
| 73 |
+
final_text = formatted_text[:MAX_TELEGRAM_MESSAGE_LENGTH]
|
| 74 |
payload = {
|
| 75 |
"chat_id": telegram_id,
|
| 76 |
"text": final_text if final_text.strip() else ".",
|
| 77 |
+
"parse_mode": "HTML",
|
| 78 |
}
|
| 79 |
|
| 80 |
|
transfers/pending_transfers.json
CHANGED
|
@@ -1 +1,13 @@
|
|
| 1 |
-
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"12": {
|
| 3 |
+
"telegram_id": 12,
|
| 4 |
+
"sender_name": "Test Sender",
|
| 5 |
+
"sender_serial_id": "1001",
|
| 6 |
+
"receiver_name": "Ahmed Salem",
|
| 7 |
+
"receiver_serial_id": "2001",
|
| 8 |
+
"receiver_account_id": "ACC-991001",
|
| 9 |
+
"amount": 200,
|
| 10 |
+
"currency": "YER",
|
| 11 |
+
"created_at": "2026-04-11T05:28:56.362317"
|
| 12 |
+
}
|
| 13 |
+
}
|