| POE-Component-Server-Twirc documentation | Contained in the POE-Component-Server-Twirc distribution. |
App::Twirc::Plugin::SecondaryAccount - Cross post updates to another account
# in config (.yml in this example)
plugins:
- SecondaryAccount
username: my_other_screen_name
password: my_other_twitter_password
option: fb
- SecondaryAccount
username: yet_another_screen_name
password: yet_another_password
net_twitter_options:
apiurl: http://identi.ca/api
# In your IRC client...
# ...post to your primary account *and* yet_another_screen_name
post Hello, world!
# ...post to your primary account and both secondary accounts
post -fb Hello, universe!
# ... post to my_other_screen name, only
post -fbonly Hello, alternate reality.
This plugin allows cross-posting messages to multiple accounts. In
configuration, you can provide an option value. When used as an option to
post, your message will be cross-posted to your primary account and the
secondary account with that option value. If you do not provide an
option value, all messages are cross-posted to the secondary account.
By appending only to the option value, your status will only be posted to
the the account with that option value.
I use a configuration similar to the one in the synopsis to cross-post my
Twitter status updates to Identi.ca, and optionally to Facebook. My Twitter
screen name is semifor. I created an account with screen name semifor_fb
and registered it with Twitter's Facebook application. In the twirc
configuration file, I assigned option value fb to the account.
I created another secondary account with my Identi.ca screen name. In twirc
configuration, I used the net_twitter_options to specify Identi.ca's
apiurl.
Now, when I post a normal status update, it is posted to semifor on both
Twitter and Identi.ca. If I include a -fb option to post, my status update
is posted to Twitter, Identi.ca, and Facebook. If I add a -fbonly option to
post, my status update is only posted to the Facebook account.
Marc Mims <marc@questright.com>
Copyright (c) 2009 Marc Mims
You may distribute this code and/or modify it under the same terms as Perl itself.
| POE-Component-Server-Twirc documentation | Contained in the POE-Component-Server-Twirc distribution. |
package App::Twirc::Plugin::SecondaryAccount; use Moose; use Net::Twitter; use POE::Component::Server::Twirc; has net_twitter_options => ( isa => 'HashRef', is => 'ro', default => sub { {} } ); has username => ( isa => 'Str', is => 'ro', required => 1 ); has password => ( isa => 'Str', is => 'ro', required => 1 ); has option => ( isa => 'Str', is => 'ro' ); has _twitter => ( isa => 'Net::Twitter', is => 'rw' ); has _option_regex => ( isa => 'Maybe[RegexpRef]', is => 'rw', default => undef ); has _useragent_class => ( isa => 'Str', is => 'ro', default => 'LWP::UserAgent::POE' ); sub BUILD { my $self = shift; $self->_twitter(Net::Twitter->new( username => $self->username, password => $self->password, source => 'twircgw', useragent => 'twirc/' . POE::Component::Server::Twirc->VERSION, useragent_class => $self->_useragent_class, %{$self->net_twitter_options}, )); if ( $self->option ) { my $option = quotemeta $self->option; $self->_option_regex(qr/^-$option(only)?\s+/); } } sub cmd_post { my ($self, $server, $channel, $nick, $textref) = @_; my $only; if ( my $option_regex = $self->_option_regex ) { $$textref =~ s/$option_regex// || return; $only = $1; } $self->_twitter->update($$textref); return $only; # return a true value to stop the processing chain } no Moose; __PACKAGE__->meta->make_immutable; 1; __END__