Welcome to Rumpy
Rumpy is some kind of framework to make up your own jabber bot quickly. It uses ActiveRecord and XMPP4R.
Our goal is 'DO NOT REINVENT THE WHEEL'.
Features
- Forget about xmpp-related things. Just set your login and password.
- Forget about database-related things. Just set your database preferences.
- Write logic using ActiveRecord and callback functions.
Getting started
Configs
Rumpy uses 3 configs:
database.ymlYour bot's database preferences.
lang.ymlYour bot's responces. Append to existing keys more answers and use them like @lang. There MUST be at least 3 keys:
hello(used when somebody adds bot),stranger(used when somebody trying to speak with bot without authorization) andauthorized(used when bot gets authorization).xmpp.ymlYour bot's jabber account settings.
Look at Examples section to see this configs.
ActiveRecord models
Implement your ActiveRecord models. You have to implement at least one model, for users.
Prepare your database
Your bot's class
Rumpy::Bot module
You have to mix in your bot's class the Rumpy::Bot module:
include Rumpy::Bot
Instance variables
Rumpy uses next instance variables:
- @models_files
Array of your models files.
- @config_path
Path to directory, containing all ruby config files. Default is
config.- @main_model
Symbol, that stands for main model. For example, if your main model is
User, you have to set @main_model to :user. Default is :user.- @pid_file
Location of the file to which pid of detached process will be saved. Default is NameOfYourBotClass.downcase + '.pid'.
- @log_file
Location of the logfile. Default is
STDERR.- @log_level
Logging severity threshold. Possible values are the same the logger from standard library has. Default is Logger::INFO.
- @log_shift_age
Number of old log files to keep, or frequency of rotation (daily, weekly or monthly). Default is
0.- @log_shift_size
Maximum logfile size. Default is
1048576.- @logger
If you need more accuracy in configuring logger, simply create one. It have to be compatible with standard library's
logger.- @bot_name
Name of the bot. Default is name of bot's class.
- @bot_version
Optional version of the bot. Default is 1.0.0.
Instance methods
Rumpy needs only three methods:
- backend_func() -> [[receiver, message]*]
This optional method is running all the time in the loop. Returns array of pairs [receiver, message].
- parser_func(msg) -> pars_result
This method parses any incoming message and returs results of parsing.
- do_func(usermodel, pars_results) -> msg
This method uses results from
parser_func, doing some stuff with model of user, from whom the message was received. Returns the answer to this user.
Hint: empty answer will not be sent.
Run bot
You can run your bot without detaching:
Rumpy.run YourBotClassName.new
Or with detaching:
bot = YourBotClassName.new
#To start your bot:
Rumpy.start bot
#To stop it:
Rumpy.stop bot
Examples
Look at
Contacts
Feel free to contact us about any questions related to Rumpy.
License
Rumpy is released under the MIT license.