kijiji-fb-bot v2.0.0
kijiji-fb-bot
A node.js bot that scrapes recent Kijiji ads and sends them in a Facebook message.
Features
- Automatically receive new Kijiji ads matching given search criteria
- Send commands to the bot to manually retrieve ads
Dependencies
- node.js - evented I/O for the backend
- kijiji-scraper - Kijiji ad scraper
- facebook-chat-api - unofficial Facebook chat API for node.js
Installation
npm install kijiji-fb-bot
Configuration
You can configure the bot by placing the following JSON files in a configuration directory:
botprops.json- Contains basic bot properties:
{
"name": "bot name (used for chat commands)",
"chatId": <chat id to send automatic updates>,
"scrapeInterval": <frequency of scrapes (in ms)>,
"remoteAdmin": <1 or 0>
}facebook.json- Contains the Facebook credentials the bot will use to log in:
{
"email": "Facebook account email",
"password": "Facebook account password"
}adprefs.json- Contains the Kijiji ad search category and location. See theprefsargument for kijiji-scraper's query() function.searchparams.json- Contains the Kijiji ad search criteria. See theparamsargument for kijiji-scraper's query() function.
Documentation
init(configDir, callback)
Will call callback with a function to stop the bot.
Arguments
configDir- The directory containing the bot's configuration files.callback(err, stop)- A callback called after the bot has been started. If there is an error,errwill not be null. If everything was successful,stopwill be a function that, when called, sets the bot to stop after the next chat message is received. It cannot be stopped immediately as a result of a limitation of the facebook-chat-api module.
Example usage
var bot = require("kijiji-fb-bot");
bot("json/botconfig", function(err, stop) {
//The bot will work its magic
//Call stop() when done
});Chat commands
The bot can be interacted with by sending it Facebook messages. Each command must be prefixed with the bot name specified in botprops.json. The following commands are supported:
list- The bot will reply with a list of the last scraped ads.scrape- The bot will scrape and reply with ads posted to Kijiji since the last scrape.info- The bot will reply with information about its state.help- The bot will reply with information about its chat commands.
Additionally, if remoteAdmin is set to 1 in botprops.json, the following chat commands will be available:
botprop [prop] [val]- Will set the value of propertypropspecified inbotprops.jsontoval.adpref [pref] [val]- Will set the value of preferenceprefspecified inadprefs.jsontoval.searchparam [param] [val]- Will set the value of parameterparamspecified insearchparams.jsontoval.
If the val argument is omitted for any of these commands, the bot will reply with the current value.
Example usage
[BOTNAME] [COMMAND] [ARGS]