/fca-utils

A NodeJS package to interact with Facebook Messenger API (fca-unofficial)

Primary LanguageTypeScriptMIT LicenseMIT

BETA VERSION

fca-utils

A NodeJS package to interact with Facebook Messenger API (fca-unofficial)
Inspired by discord.js

Installation

npm install fca-utils

Basic Usages

Initialize

import { Client } from 'fca-utils'

const client = new Client({
    prefix: "!", // Prefix for commands
    ignoreMessageInCommandEvent: true, // Ignore message in command event
});

client.loginWithAppState(process.env.BASE64_ENCODED_APPSTATE);
client.on("ready", (api, curID) => {
    console.log("LOGGED IN AS", curID);
    console.log("Listening for messages...");
});

Login with username and password coming soon...



Message Events

client.on(EVENT, (msg) => {
    // Do something
});

Events

  • error - Account error (locked/expired, etc.)
  • message - When a message is received
  • command - When a command is executed (only if prefix is set)
  • reaction - When a reaction is added to a message
  • unsend - When a message is unsent
  • event - When an event is received, such as rename, kick/add users, etc.
  • others - Others events: typ, read, presence, read_receipt



Message

client.on("message", (msg) => {
    console.log("Message received:", msg.body);

    if (msg.type === "message") {
        try {
            if (msg.args[0]?.toLowerCase() === "hi") {
                msg.reply("Hello!");
            }
        } catch (e) {
            console.error(e);
        }
    }
});
Screenshot

message_demo


Basic msg properties:

  • msg.body - Message body
  • msg.args - Array of message body splitted by spaces/line breaks
  • msg.senderID - ID of the sender
  • msg.threadID - ID of the thread/group
  • msg.attachments - Array of attachments
  • msg.mentions - Array of mentions

Basic msg methods:

  • msg.send("your message") - Send a message back to the thread
  • msg.reply("your message") - Reply to the message



Command

client.on("command", async (cmd) => {
    console.log("Command received:", cmd.name);

    try {
        if (cmd.name === "ping") {
            await cmd.message.reply("Pong!");
        }
    } catch (e) {
        console.error(e);
    }
})
Screenshot

message_demo


cmd properties:

  • cmd.message - same as the msg object in "message" event
  • cmd.name - name of the command
  • cmd.commandArgs - array of command arguments, for example:
    • !ping hello world -> ["hello", "world"]



Reaction

client.on("reaction", (msg) => {
    // Do something
});



Unsend

client.on("unsend", (msg) => {
    // Do something
});



Event

client.on("event", (msg) => {
    // Do something
});



Others

client.on("others", (msg) => {
    // Do something
});



Comming soon...