A node.js bot that scrapes recent Kijiji ads and sends them in a Facebook message.
- Automatically receive new Kijiji ads matching given search criteria
- Send commands to the bot to manually retrieve ads
- node.js - evented I/O for the backend
- kijiji-scraper - Kijiji ad scraper
- facebook-chat-api - unofficial Facebook chat API for node.js
npm install kijiji-fb-bot
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 theprefs
argument for kijiji-scraper's query() function. -
searchparams.json
- Contains the Kijiji ad search criteria. See theparams
argument for kijiji-scraper's query() function.
Will call callback
with a function to stop the bot.
-
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,err
will not be null. If everything was successful,stop
will 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.
var bot = require("kijiji-fb-bot");
bot("json/botconfig", function(err, stop) {
//The bot will work its magic
//Call stop() when done
});
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 propertyprop
specified inbotprops.json
toval
.adpref [pref] [val]
- Will set the value of preferencepref
specified inadprefs.json
toval
.searchparam [param] [val]
- Will set the value of parameterparam
specified insearchparams.json
toval
.
If the val
argument is omitted for any of these commands, the bot will reply with the current value.
[BOTNAME] [COMMAND] [ARGS]