Sindbad~EG File Manager
from flask import request, Blueprint, jsonify, redirect, url_for,flash, render_template,session,json,render_template_string,Response,send_file
import requests
from .. import Cryptography,Auth,RouteGroup,Helper,socketio
from datetime import timedelta,date,datetime
from collections import defaultdict
from core import app, socketio # Import app & socketio from __init__.py
import re
from flask_socketio import emit
import logging
from flask_cors import cross_origin
app = Blueprint('whatsapp', __name__)
logging.basicConfig(level=logging.INFO, encoding="utf-8")
# WhatsApp API Details
VERIFY_TOKEN = "wa_Almighty_84"
ACCESS_TOKEN = 'EAB0qrXZC1z5MBO3I0X7guUKXF6Kr8vaEFEJazOAqnnZALIE8w30sRYm85OkmVs4vVqYS9gxDrRAK9yzhgdI1cPgKkWMZCRAzVijZCjOEnPQf0uiD6N2md8ZA0zZCQnVgkDb0OKNMUI62e22a0SYMjsk26XHxhweZCxjDC7HeeuLJiORQu3rk0PZBP5lluCGml72cvAZDZD'
PHONE_NUMBER_ID = "602585279593372"
# SocketIO event for sending message
@socketio.on('sio_send_message')
def sio_send_message(data):
print("yes comming sio_send_message")
phone_number = data.get('phoneNumber')
message = data.get('message')
if not phone_number or not message:
emit('sio_error', {'message': 'Phone number and message required'})
return
response_data = send_whatsapp_message(phone_number, message)
if response_data:
emit('sio_display_sent_message', {'phone': phone_number, 'message': message})
# Function to send WhatsApp message via API
def send_whatsapp_message(to, message):
print("yes comming send_whatsapp_message")
url = f'https://graph.facebook.com/v18.0/{PHONE_NUMBER_ID}/messages'
headers = {
'Authorization': f'Bearer {ACCESS_TOKEN}',
'Content-Type': 'application/json'
}
data = {
'messaging_product': 'whatsapp',
'to': to,
'type': 'text',
'text': {'body': message}
}
response = requests.post(url, headers=headers, json=data)
return response.json() if response.status_code == 200 else None
# Home Route
@app.route('/')
def index():
return render_template('whatsapp_temp/index.html')
# Home Route
@app.route('/demo')
def demo():
return render_template('whatsapp_temp/index.html')
VERIFY_TOKEN = "wa_Almighty_84" # Your verification token
@app.route("/webhook", methods=["GET", "POST"])
def webhook():
if request.method == "GET":
# Verify the webhook
mode = request.args.get("hub.mode")
token = request.args.get("hub.verify_token")
challenge = request.args.get("hub.challenge")
if mode == "subscribe" and token == VERIFY_TOKEN:
return challenge, 200 # Respond with the challenge token
else:
return "Forbidden", 403
elif request.method == "POST":
try:
data = request.get_json()
if not data:
return jsonify({"error": "Invalid JSON"}), 400
# Save webhook data to a file for debugging
with open("webhook_logs.txt", "a", encoding="utf-8") as f:
f.write(f"{datetime.now()} - {json.dumps(data, ensure_ascii=False)}\n")
logging.info(f"Received webhook data: {json.dumps(data, ensure_ascii=False)}")
if 'entry' in data:
for entry in data['entry']:
if 'changes' in entry:
for change in entry['changes']:
value = change.get('value', {})
# Process message statuses (e.g., read receipts)
if 'statuses' in value:
for status in value['statuses']:
message_id = status.get('id', 'Unknown')
message_status = status.get('status', 'Unknown')
recipient = status.get('recipient_id', 'Unknown')
logging.info(f"Message {message_id} status for {recipient}: {message_status}")
# Emit status update to frontend
socketio.emit('message_status', {
'message_id': message_id,
'status': message_status,
'recipient': recipient
})
# Process incoming messages
if 'messages' in value:
for message in value['messages']:
from_number = message.get('from', 'Unknown')
text_message = message.get('text', {}).get('body', '')
logging.info(f"New message from {from_number}: {text_message}")
# Emit received message in real-time
socketio.emit('new_message', {
'from': from_number,
'message': text_message
})
return jsonify({"status": "Message received"}), 200
except Exception as e:
logging.error(f"Webhook processing error: {str(e)}")
return jsonify({"error": "Internal Server Error"}), 500
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists