NAME

Bot::Backbone::Service::Role::SendPolicy - Provides send policy framework to a service

VERSION

version 0.161950

SYNOPSIS

package Bot::Backbone::Service::RandomGibberish;
use v5.14;
use Bot::Backbone::Service;

with qw(
    Bot::Backbone::Service::Role::Service
    Bot::Backbone::Service::Role::SendPolicy
);

use List::Util qw( shuffle );

# Post to a random chat
sub send_message {
    my ($self, $params) = @_;

    my @chats = grep { $_->does('Bot::Backbone::Service::Role::Chat') }
                       $self->bot->list_services;

    my ($chat) = shuffle @chats;
    $chat->send_message($params);
}

# ... whatever else this insane service does ...

DESCRIPTION

This role is used to apply send policies to Bot::Backbone::Service::Role::Chat, Bot::Backbone::Service::Role::ChatConsumer, and Bot::Backbone::Service::Role::Dispatch services. If you have a service that is none of those, but would like to have a send policy applied to anything it may send to a chat, you may define a send_message method and then apply this role.

ATTRIBUTES

send_policy_name

This is the name of the send policy to apply to this service. It is set using the send_policy setting in the service configuration. It will be used to set "send_policy", if any policy is set.

send_policy

This is the Bot::Backbone::SendPolicy that has been selected for this service.

REQUIRED METHODS

send_message

This role requires a send_mesage method be present that works just the same as the one required in Bot::Backbone::Service::Role::Chat. This role will modify that method to apply the "send_policy" to calls to that method.

AUTHOR

Andrew Sterling Hanenkamp <hanenkamp@cpan.org>

COPYRIGHT AND LICENSE

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.