GOAT MESSENGER is a modified fork of Goat Bot V2 by ntkhang03, enhanced and maintained by EryXenX.
| Feature | Description |
|---|---|
| π Custom FCA | Uses fca-eryxenx β patched fork with bug fixes and stability improvements |
| βοΈ Handler Improvements | No-prefix system for bot admins, smart command suggestion |
| π¨ UI Overhaul | Redesigned message templates with clean formatting |
| π‘οΈ React Unsend | Auto-unsend messages on specific emoji reactions |
| π§ Setting Command | Full bot config control via chat β no need to edit files manually |
| Role | Person | Link |
|---|---|---|
| π Original Creator | NTKhang | Goat Bot V2 |
| π§ This Fork | EryXenX | GOAT-MESSENGER |
All core copyright belongs to NTKhang (ntkhang03). This fork does not override the original license.
git clone https://github.com/EryXenX/GOAT-MESSENGER.git
cd GOAT-MESSENGER
npm install
node index.jsAdd your Facebook cookies to account.txt (JSON array format from EditThisCookie), then configure config.json.
Commands go in scripts/cmds/yourcommand.js.
module.exports = {
config: {
name: "commandname", // trigger name
version: "1.0.0",
author: "YourName",
countDown: 5, // cooldown in seconds
role: 0, // 0 = everyone, 1 = group admin, 2 = bot admin
shortDescription: "...",
longDescription: "...",
category: "fun",
guide: "{prefix}commandname [args]"
},
// βββ Triggered when command is used βββ
onStart: async function ({ api, event, args, message, getLang }) {
message.reply("Hello!");
},
// βββ Triggered when someone replies to bot's message βββ
onReply: async function ({ api, event, Reply, message }) {
if (event.senderID !== Reply.author) return;
message.reply(`You replied: ${event.body}`);
},
// βββ Triggered when someone reacts to bot's message βββ
onReaction: async function ({ api, event, Reaction, message }) {
message.reply(`You reacted with: ${event.reaction}`);
},
// βββ Triggered on every message (no prefix needed) βββ
onChat: async function ({ api, event, message }) {
if (event.body === "hello") message.reply("hi!");
},
// βββ Triggered on thread events (join/leave etc.) βββ
onEvent: async function ({ api, event, message }) {
if (event.logMessageType === "log:subscribe") {
message.reply("Welcome!");
}
}
};| Value | Who can use |
|---|---|
0 |
Everyone |
1 |
Group admins only |
2 |
Bot admins only (set in config.json) |
message.reply("text") // reply to current message
api.sendMessage("text", threadID) // send to any thread
api.sendMessage({ body: "text", attachment }, tid) // send with file/image
api.setMessageReaction("β
", event.messageID, () => {}, true)
api.unsendMessage(messageID)
api.getCurrentUserID()
await api.getThreadInfo(threadID)
await api.getUserInfo(userID)// In onStart β register reply listener
const sent = await message.reply("What's your name?");
global.GoatBot.onReply.set(sent.messageID, {
commandName: "mycommand",
messageID: sent.messageID,
author: event.senderID,
step: 1 // any extra data
});
// In onReply β handle the reply
onReply: async function ({ api, event, Reply, message }) {
if (event.senderID !== Reply.author) return;
message.reply(`Hello, ${event.body}!`);
}switch (event.logMessageType) {
case "log:subscribe": // User joined
case "log:unsubscribe": // User left
case "log:thread-name": // Group name changed
case "log:thread-image": // Group photo changed
case "log:thread-admins":// Admin list changed
}{
"prefix": "-",
"adminBot": ["your_facebook_id"],
"noPrefix": { "enable": false },
"reactUnsend": {
"enable": true,
"onlyAdmin": true,
"emojis": ["π‘"]
},
"optionsFca": {
"listenEvents": true,
"autoMarkDelivery": false,
"updatePresence": false,
"selfListen": false,
"autoReconnect": true
}
}
Built on the shoulders of giants Β· Respect Open Source Β· Credit your sources
Original Work Β© NTKhang (ntkhang03) Β |Β Fork by EryXenX
Original Work Β© NTKhang (ntkhang03) Β |Β Fork by EryXenX