from flask import Flask, request import requests app = Flask(__name__) # --- CONFIGURATION --- FB_VERIFY_TOKEN = 'YOUR_FB_VERIFY_TOKEN' FB_PAGE_ACCESS_TOKEN = 'YOUR_FB_PAGE_ACCESS_TOKEN' TELEGRAM_BOT_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN' TELEGRAM_CHAT_ID = 'YOUR_TELEGRAM_CHAT_ID' # --- HELPER FUNCTIONS --- def send_telegram_message(text): url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = { "chat_id": TELEGRAM_CHAT_ID, "text": text } requests.post(url, json=payload) def send_facebook_message(recipient_id, text): url = f"https://graph.facebook.com/v18.0/me/messages?access_token={FB_PAGE_ACCESS_TOKEN}" payload = { "recipient": {"id": recipient_id}, "message": {"text": text} } requests.post(url, json=payload) # --- WEBHOOK ENDPOINTS --- # 1. Facebook Webhook @app.route('/fb-webhook', methods=['GET', 'POST']) def fb_webhook(): if request.method == 'GET': mode = request.args.get('hub.mode') token = request.args.get('hub.verify_token') challenge = request.args.get('hub.challenge') if mode == 'subscribe' and token == FB_VERIFY_TOKEN: return challenge, 200 return 'Verification failed', 403 if request.method == 'POST': data = request.get_json() if data.get('object') == 'page': for entry in data.get('entry', []): for messaging_event in entry.get('messaging', []): sender_id = messaging_event['sender']['id'] if 'message' in messaging_event and 'text' in messaging_event['message']: user_text = messaging_event['message']['text'] forward_text = f"{sender_id}:{user_text}" send_telegram_message(forward_text) return 'EVENT_RECEIVED', 200 return 'Not Found', 404 # 2. Telegram Webhook @app.route('/tg-webhook', methods=['POST']) def tg_webhook(): data = request.get_json() if 'message' in data and 'text' in data['message']: tg_text = data['message']['text'] if ':' in tg_text: parts = tg_text.split(':', 1) recipient_id = parts[0].strip() message_to_send = parts[1].strip() if recipient_id.isdigit(): send_facebook_message(recipient_id, message_to_send) return 'OK', 200 # WSGI Application application = app if __name__ == '__main__': app.run()