Pymessenger
A Python Wrapper for the FB Messenger Bot API (Send/Receive API)
Install / Use
/learn @davidchua/PymessengerREADME
pymessenger 
Python Wrapper for Facebook Messenger Platform.
Disclaimer: This wrapper is NOT an official wrapper and do not attempt to represent Facebook in anyway.
About
This wrapper has the following functions:
- send_text_message(recipient_id, message)
- send_message(recipient_id, message)
- send_generic_message(recipient_id, elements)
- send_button_message(recipient_id, text, buttons)
- send_attachment(recipient_id, attachment_type, attachment_path)
- send_attachment_url(recipient_id, attachment_type, attachment_url)
- send_image(recipient_id, image_path)
- send_image_url(recipient_id, image_url)
- send_audio(recipient_id, audio_path)
- send_audio_url(recipient_id, audio_url)
- send_video(recipient_id, video_path)
- send_video_url(recipient_id, video_url)
- send_file(recipient_id, file_path)
- send_file_url(recipient_id, file_url)
- send_action(recipient_id, action)
- send_raw(payload)
- get_user_info(recipient_id)
- set_get_started(gs_obj)
- set_persistent_menu(pm_obj)
- remove_get_started()
- remove_persistent_menu()
You can see the code/documentation for there in bot.py.
The functions return the full JSON body of the actual API call to Facebook.
Register for an Access Token
You'll need to setup a Facebook App, Facebook Page, get the Page Access Token and link the App to the Page before you can really start to use the Send/Receive service.
This quickstart guide should help
Installation
pip install pymessenger
Usage
from pymessenger.bot import Bot
bot = Bot(<access_token>, [optional: app_secret])
bot.send_text_message(recipient_id, message)
Note: From Facebook regarding User IDs
These ids are page-scoped. These ids differ from those returned from Facebook Login apps which are app-scoped. You must use ids retrieved from a Messenger integration for this page in order to function properly.
If
app_secretis initialized, an app_secret_proof will be generated and send with every request. Appsecret Proofs helps further secure your client access tokens. You can find out more on the Facebook Docs
Sending a generic template message:
Generic Template Messages allows you to add cool elements like images, text all in a single bubble.
from pymessenger.bot import Bot
bot = Bot(<access_token>)
elements = []
element = Element(title="test", image_url="<arsenal_logo.png>", subtitle="subtitle", item_url="http://arsenal.com")
elements.append(element)
bot.send_generic_message(recipient_id, elements)
Output:

Sending an image/video/file using an URL:
from pymessenger.bot import Bot
bot = Bot(<access_token>)
image_url = "http://url/to/image.png"
bot.send_image_url(recipient_id, image_url)
Todo
- Structured Messages
- Receipt Messages
- Quick Replies
- Airlines
- Tests!
Example

You can find an example of an Echo Facebook Bot in examples/
Related Skills
node-connect
341.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
