MinhHuyDev / fbchat-v2

About Facebook Chat (Messenger) for Python

Home Page:https://mhuyz.dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

FBChat-Remake: Open Source

Xin chào, tôi là MinhHuyDev. Lời nói đầu, đây là lần đầu tiên mà mình làm lại một source lớn như vậy nên sẽ không tránh được những sai sót trong quá trình code, rất mong sẽ được người dùng báo cáo lại Lỗi tại issues của GitHub này nhé:3

***** Đây không phải là API chính thức; Facebook có sẵn API dành cho chatbot tại đây. Thư viện này khác ở chỗ nó sử dụng tài khoản/cookie Facebook thông thường để thay thế.

image

👽Bạn không thể hiểu được tiếng Việt?, bạn có thể đọc README (ENGLISH): tại đây

📢Dành cho người mới: Lướt xuống cuối trang bạn sẽ thấy TUTORIAL (Hướng dẫn) nhận tin nhắn và gửi tin nhắn nhé!

Thông tin cơ bản

Có gì mới trong phiên bản này?

NEW: Sửa lỗi một vài thứ và CLEAR CODE gọn hơn

Tutorial (Hướng dẫn cơ bản)

Đầu tiên: Người dùng cần phải cài đặt tất cả các gói tài nguyên cần thiết để có thể sử dụng. Nếu bạn chưa cài đặt, hãy dùng lệnh sau:

Tiếp theo: Hãy tạo thư mục trong chính folder mà mình vừa tải về từ GitHub về bằng cách sau:

Đối với Windows (Command Prompt/PowerShell):

Đối với Mac/Linux:

Sau đó: Tiếp tục vào file mainBot.py, Và copy đoạn code sau và dán vào file:

from __facebookToolsV2 import dataGetHome, fbTools
from __messageListenV2 import listeningEvent  # Import the specific class or module you need
from __sendMessage import api
import datetime, threading, os, json

class fbClient:
    def __init__(self, cookies, dataFB):
        self.cookies = cookies
        self.dataFB = dataFB
        self.messageID = None
        self.prefix = "/" # This is the command prompt; when you enter this symbol, the corresponding command will be invoked. Additionally, you can customize it as per your preference (e.g., , . * ! ? etc)
        self.pathFile = ".mqttMessage"
        self.recentReceivedMessages = []

    def setDefaultValue(self):
        self.userID, self.bodyMessage, self.replyToID, self.bodySend, self.commandPlugins = [None] * 5

    def receiveCommandAndSend(self):
        if (self.dataFB["FacebookID"] != self.userID):
             match self.commandPlugins.lower():
                 case "uptime":
                     self.bodySend = "datetime: " + str(datetime.datetime.now())
                 case "hola" | "hello" | "hi":
                     self.bodySend = "Hey,", self.userID
                 case "ping":
                     self.bodySend = "Pong!"
                 case __:
                     self.bodySend = self.bodyMessage
             mainSend = api()  # Use the specific class or module you imported
             threading.Thread(target=mainSend.send, args=(self.dataFB, self.bodySend, self.replyToID)).start()
             self.setDefaultValue()

    def prefixCheck(self):
        if self.bodyMessage[0] == self.prefix:
            self.commandPlugins = self.bodyMessage.split(',')[1]
        else:
            self.commandPlugins = self.bodyMessage


    def receiveMessage(self):
        self.fbt = fbTools(self.dataFB, 0)
        mainReceiveMessage = listeningEvent(self.fbt, self.dataFB)  # Use the specific class or module you imported
        mainReceiveMessage.get_last_seq_id()
        threading.Thread(target=mainReceiveMessage.connect_mqtt, args=()).start()
        """
        Why am I using Threading here? 
        Because when calling connect_mqtt(), the programs after it won't be able to run 
        as it continuously connects to the Facebook server. To overcome this, I've used threading 
        to make it run concurrently with other functions!
        """
        while 1:
           if os.path.isfile(self.pathFile):
               try:
                   self.bodyMain = json.loads(open(self.pathFile, "r", encoding="utf-8").read())
                   # print(f"{self.bodyMain['messageID']} != {self.messageID} {self.bodyMain['messageID'] != self.messageID}")
                   if self.bodyMain['messageID'] != self.messageID:
                       self.userID = self.bodyMain['userID']
                       self.messageID = self.bodyMain['messageID']
                       self.bodyMessage = self.bodyMain['body']
                       self.replyToID = self.bodyMain['replyToID']
                       print(f"> userID: {self.userID}\n> messageID: {self.messageID}\n> messageContents: {self.bodyMessage}\n> From {self.bodyMain['type']}ID: {self.replyToID}\n- - - - -")
                       self.prefixCheck()
                       self.receiveCommandAndSend()
                       self.setDefaultValue()
               except:
                   pass

cookies = "this is set Cookie Facebook"
dataFB = dataGetHome(cookies)
_ = fbClient(cookies, dataFB)
_.setDefaultValue()
_.receiveMessage()
print("done!")

🖇️LƯU Ý: Đây chỉ là một bản code mẫu về nhận tin nhắn và gửi tin nhắn, Nếu xảy ra lỗi. Hãy đóng góp bằng cách sửa nó và gửi thông tin lỗi vào issue hoặc hãy liên hệ trực tiếp với tôi qua Telegram

Sau đó, quay lại Terminal/CMD và chạy file này bằng lệnh sau:

Nếu xảy ra lỗi và không chạy được, hãy thử lại bằng hai lệnh sau:

hoặc

💔Nếu vẫn xảy ra lỗi. Vui lòng kiểm tra xem đã tải Python về thiết bị hay chưa. Nếu chưa tải, hãy nhấp vào đây để được chuyển đến trang tải Python chính thức.

🏅Dưới đây là hình ảnh khi chạy được bot thành công:

image


image

🫶🏻Cảm ơn bạn đã đọc đến đây! Nếu bạn vẫn còn nhiều câu hỏi thắc mắc. Hãy lướt xuống dưới để tìm câu trả lời cho riêng mình nhé :3 Yêuuuuuu

Các câu hỏi thường gặp

Bạn có thể xem các vấn đề thường gặp hoặc Tutorial tại đây: DOCS.md

Thông báo về phiên bản mới

📢: Coming soon...

Thông tin liên hệ

About

About Facebook Chat (Messenger) for Python

https://mhuyz.dev

License:Apache License 2.0


Languages

Language:Python 100.0%