Lightweight Python wrapper for Facebook Messenger and Graph API. Send messages, post to feed, and handle webhooks easily with Flask.
pip install cortex
from dotenv import load_dotenv
load_dotenv()
import os
ACCESS_TOKEN = os.getenv("PAGE_ACCESS_TOKEN")
VERIFY_TOKEN = os.getenv("VERIFY_TOKEN")
from cortex import Client
fb = Client(ACCESS_TOKEN)
# Text message
fb.sendMsg(psid="USER_ID", text="Hello!", msg_type="text")
# Image message
fb.sendMsg(psid="USER_ID", msg_type="image", media_url="https://example.com/image.jpg")
# Video message
fb.sendMsg(psid="USER_ID", msg_type="video", media_url="https://example.com/video.mp4")
# Text post
fb.post(media_type="text", text="Hello world!")
# Image post
fb.postFeed(media_type="image", media_url="https://example.com/image.jpg", text="Caption here")
# Video post
fb.postFeed(media_type="video", media_url="https://example.com/video.mp4", title="My Video", description="Description")
from flask import Flask, request
app = Flask(__name__)
@app.route("/webhook", methods=["GET", "POST"])
def webhook():
if request.method == "GET":
return fb.challenge(VERIFY_TOKEN)
elif request.method == "POST":
def echo(sender_id, msg_type, content):
if msg_type == "text":
fb.sendMsg(psid=sender_id, text=f"You sent: {content}", msg_type="text")
else:
fb.sendMsg(psid=sender_id, text=f"You sent a {msg_type}: {content}", msg_type="text")
return fb.event(handler=echo)
if __name__ == "__main__":
app.run(port=5000, debug=True)
Telegram: @cortexinvader
Facebook: facebook.com/Cortexinvader
MIT License