This repository has been archived on 2025-07-31. You can view files and clone it, but cannot push or open issues or pull requests.
Mads Marquart d2741ca419 Added baseline for sphinx documentation and on2FACode event
The docs are still very WIP, but they should be functional. Just
execute `make html` in the docs folder, and you should be able to
navigate to `/docs/_build/html` and view it in your browser
2017-05-26 13:38:54 +02:00
2015-04-18 21:55:56 +09:00
2015-04-18 21:55:56 +09:00

======
fbchat
======


Facebook Chat (`Messenger <https://www.messenger.com/>`__) for Python. This project was inspired by `facebook-chat-api <https://github.com/Schmavery/facebook-chat-api>`__.

**No XMPP or API key is needed**. Just use your EMAIL and PASSWORD.


Installation
============

Simple:

.. code-block:: console

    $ pip install fbchat


Example Login
=============

.. code-block:: python

    import fbchat

    client = fbchat.Client('YOUR_EMAIL', 'YOUR_PASSWORD')

Sending a Message
=================

.. code-block:: python

    friends = client.getUsers("FRIEND'S NAME")  # return a list of names
    friend = friends[0]
    sent = client.send(friend.uid, "Your Message")
    if sent:
        print("Message sent successfully!")
    # IMAGES
    client.sendLocalImage(friend.uid,message='<message text>',image='<path/to/image/file>') # send local image
    imgurl = "http://i.imgur.com/LDQ2ITV.jpg"
    client.sendRemoteImage(friend.uid,message='<message text>', image=imgurl) # send image from image url


Getting user info from user id
==============================

.. code-block:: python

    friend1 = client.getUsers('<friend name 1>')[0]
    friend2 = client.getUsers('<friend name 2>')[0]
    friend1_info = client.getUserInfo(friend1.uid) # returns dict with details
    both_info = client.getUserInfo(friend1.uid,friend2.uid) # query both together, returns list of dicts
    friend1_name = friend1_info['name'] 


Getting last messages sent
==========================

.. code-block:: python
    
    last_messages = client.getThreadInfo(friend.uid, last_n=20)
    last_messages.reverse()  # messages come in reversed order
    
    for message in last_messages:
        print(message.body)


Example Echobot
===============

.. code-block:: python

    import fbchat
    #subclass fbchat.Client and override required methods
    class EchoBot(fbchat.Client): 

        def __init__(self,email, password, debug=True, user_agent=None):            
            fbchat.Client.__init__(self,email, password, debug, user_agent)

        def on_message(self, mid, author_id, author_name, message, metadata):
            self.markAsDelivered(author_id, mid) #mark delivered
            self.markAsRead(author_id) #mark read

            print("%s said: %s"%(author_id, message))

            #if you are not the author, echo
            if str(author_id) != str(self.uid):
                self.send(author_id,message)
    
    bot = EchoBot("<email>", "<password>")
    bot.listen()


Saving session
==========================

.. code-block:: python
    
    session_cookies = client.setSession()
    # save session_cookies


Loading session
==========================

.. code-block:: python
    
    client = fbchat.Client(None, None, session_cookies=session_cookies)
    # OR
    client.setSession(session_cookies)


Authors
=======

Taehoon Kim / `@carpedm20 <http://carpedm20.github.io/about/>`__
Description
Fork - Facebook Chat (Messenger) for Python
Readme 3.5 MiB
Languages
Python 100%