Ruby 2 or greater is required. To be compatible with Ruby 1.9, you can try :
sed 's/prepend/include/g' -i botpop.rb
but i did never try... You better update ruby ! ;)
Too install the stuff, just do :
bundle install # install the required gems
cp modules_config.yml.example modules_config.yml
editor modules_config.yml # set the database settings, etc.
# create your database
rake db:install # migrate the base plugin
By default, only the first occurence of the argument will be used, unless specified.
modules_config.yml
)plugins/
)You can specify the --debug OPT option at program start. It will define as many __$debug_OPT__ globals to enable debug on the plugins.
As example:
# If debug enabled for this options and error occured
if $debug_plugin and variable == :failed
binding.pry # user hand here
# Obsiously, it is usefull to trylock a mutex before because the bot use
# Threads and can call many times this binding.pry
end
Some official plugins are developped. You can propose your own creation by pull request, or add snippets link to the wiki.
!p noob for_you
You can easy create your own plugins.
The bot is based on Cinch framework. You should take the time to read the documentation before developping anything.
A full example of plugin code is provided in the commented file : Example of Fury Plugin
First, put your ruby code file in plugins/
, and put your code in the scope :
class MyFuryPlugin < Botpop::Plugin
include Cinch::Plugin
def exec_whatkingofanimal m
m.reply "Die you son of a" + ["lion", "pig", "red panda"].sample + " !!"
end
...code...
end
To create a matching to respond to a message, you have to specifie in your plugin :
class MyFuryPlugin < Botpop::Plugin
include Cinch::Plugin
match(/!whatkingofanimal.*/, use_prefix: false, method: :exec_whatkingofanimal)
...code...
end
The official plugin Base provides the command !help and !help plugin.
It list the avaliable commands of the plugins. You can add your help to your plugin by providing a HELP constant. The strings should be as short as possible. You should write it like the following:
class MyFuryPlugin < Botpop::Plugin
HELP = ["!whatkingofanimal", "!animallist", "!checkanimal [type]"]
...code...
end
You can enable or disable plugin by using the constant ENABLED. The constant must be defined by the developper of the plugin. For example, you can implement it like :
class MyFuryPlugin < Botpop::Plugin
ENABLED = config['enable'].nil? ? true : config['enable']
end
Then, a simple line in the modules_configuration.yml
file should be enough.
You can configure your plugins via the file modules_configuration.yml
.
If you considere that your plugin needs a particular configuration file, then create a new one il the plugins
directory.
To use the configuration loaded by modules_configuration.yml
, use the method config
.
config
takes an optionnal Hash as argument. It can take:
:safe => (true or false)
:name => (string or symbol)
This method returns a Hash with configuration.
By default, the method raise a MissingConfigurationZone
error if no entry in the modules_configuration.yml
file.
The configuration file modules_configuration.yml
must seems like :
name:
entry: "string"
entry2:
- 1
- 2.2
- "ohoh"
- nextelement:
- oh oh !
By default, the modules_configuration.yml
file is configured for default plugins.
Check this specified README FOR DATABASE IN PLUGINS
Requires postgresql, because it uses the pg_array extension.
Check this specified README FOR RIGHTS MANAGEMENT