Bot::Backbone::SendPolicy - Define policies to prevent flooding and other bot no-nos
version 0.160630
package MyBot; use v5.14; use Bot::Backbone; # This policy prevents the bot from sending more than once every 1.5 seconds send_policy no_flooding => ( MinimumInterval => { interval => 1.5 }, ); # This policy does the same, but discards messages coming too fast send_policy no_flooding_with_prejedice => ( MinimumInterval => { interval => 1.5, discard => 1 }; ); # This policy discards messages repeated within 5 minutes send_policy dont_repeat_yourself => ( MinimumRepeatInterval => { interval => 5*60, discard => 1 }; ); service jabber_chat => ( service => 'JabberChat', # your other settings... send_policy => 'no_flooding', ); service group_foo => ( service => 'GroupChat', chat => 'jabber_chat', group => 'foo', # your other settings... send_policy => 'no_flooding_with_prejudice', ); # Policy that is shared my $do_not_repeat = [ Bot::Backbone::SendPolicy::MinimumRepeatInterval->new( interval => 300, # 5 * 60 discar => 1, ), ]; service wikipedia => ( service => '.Wikipedia', chat => 'group_foo', # your other settings... send_policies => $do_not_repeat, ); service google_search => ( service => 'GoogleSearch', chat => 'group_foo', # your other settings... send_policies => $do_not_repeat, );
Bots are fun and all, but they can easily become annoying. These controls for preventing a bot from sending too often or repeating itself too frequently can help to minimize that annoyance.
The purpose of the send policy framework is to allow the bot maintainer to set policies against any service that may call send_message. The policy set against that service may delay any message being sent, cause a message to be discarded, or alter the message.
send_message
The framework is designed to be extensible with a couple very useful policies being provided with the backbone framework.
See Bot::Backbone::SendPolicy::MinimumInterval and Bot::Backbone::SendPolicy::MinimumRepeatInterval. See Bot::Backbone and Bot::Backbone::Service for more information on how send policies are defined and applied.
The rest of this docuemntation describes how to build a send policy implementation.
This is a back reference to the bot.
my $send_policy = $policy->allow_send({ text => 'some message', ... });
Given a set of options passed to the send_message method of Bot::Backbone::Service::Role::Chat, return a hash reference containing the instrucitons on what to do with that message. The allow_send method may also modify the passed in options to alter the message being posted.
allow_send
The result may contain the following keys:
This is a boolean value. If true, the message will be delivered to the chat. If it is false, the message is immediately discarded.
This must be set. If not set, an exception will be thrown.
This is a numeric value that contains a number of fractional sections to wait utnil the message should be delivered. The message will be put on hold and then delivered after that amount of wait time has passed.
Andrew Sterling Hanenkamp <hanenkamp@cpan.org>
This software is copyright (c) 2016 by Qubling Software LLC.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Bot::Backbone, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Bot::Backbone
CPAN shell
perl -MCPAN -e shell install Bot::Backbone
For more information on module installation, please visit the detailed CPAN module installation guide.