Viết chatbot với fbchat trong Python
Hôm nay mình sẽ hướng dẫn các bạn sử dụng Facebook Chat (Messenger) với fbchat thông qua một số ví dụ cơ bản.
- Cài đặt fbchat:
$ pip install fbchat
- Một số khái niệm:
Threads: có 2 loại là group và user được thể hiện quaThreadType.GROUP
vàThreadType.USER
Message_id: Mỗi tin nhắn bạn gửi đi đều có một ID duy nhất. Các action kèm theo cũng ứng với ID duy nhất đó. - Cách sử dụng:
Tạo một instance của Client, nếu bạn có xác thực 2 bước thì sẽ phải nhập mã xác thực qua prompt.
from fbchat import Client
from fbchat.models import *
client = Client(your_email, your_password)
Để tránh bị lộ thông tin tài khoản ngay trong source code, bạn nên lưu email, password ở một file khác.
* Một số ví dụ
# -*- coding: UTF-8 -*-
from fbchat import Client
from fbchat.models import *
client = Client(email, password)
print('Own id: {}'.format(client.uid))
client.sendMessage('Hi me!', thread_id=client.uid, thread_type=ThreadType.USER)
client.logout()
Kết quả: bạn đã in ra màn hình console fbid của mình, và đồng thời gửi tin nhắn có nội dung Hi me!
đến chính mình.
client.sendEmoji(emoji='?', size=EmojiSize.LARGE, thread_id=client.uid, thread_type=ThreadType.USER)
bạn cũng có thể gửi ảnh, đổi Emoji, nickname, color,…
Chúng ta sẽ đến với một ví dụ thú vị hơn, tạo bot. Bot sẽ trả lời lại đúng nội dung mà bạn bè nhắn cho ban.
# -*- coding: UTF-8 -*-
from fbchat import log, Client
class EchoBot(Client):
def onMessage(self, author_id, message, thread_id, thread_type, **kwargs):
self.markAsDelivered(author_id, thread_id)
self.markAsRead(author_id)
if author_id != self.uid:
self.sendMessage(message, thread_id=thread_id, thread_type=thread_type)
client = EchoBot("", "")
client.listen()
Vừa rồi, mình có giới thiệu cách tạo chat bot cơ bản với python, các bạn có thể sử dụng nó với nhiều mục đích khác nhau, thông báo cho bạn bè khi mình không thể trả lời tin nhắn được, gửi các alert hằng ngày,…
Hãy tự tạo một con bot cho chính mình nhé.
Tham khảo: https://fbchat.readthedocs.io/en/master/index.html