Plugin in Perl - buddy status
Gabor Szabo
szabgab at gmail.com
Sun Mar 13 12:17:35 EDT 2011
Embarrassing but let me answer my own issue after finding out what
was the problem.
Apparently there were several buddies listed in Pidgin but I have
not seen them in the GUI as "Buddies/Show/Offline Buddies" was not
checked.
Apparently I had a buddy called 'szabgab' mistakenly added and that's
what I found in the script and not the one that was connected to the
real account. In order to find that account I also had to modify the code
and write:
my $buddy = Purple::Find::buddy($acc, 'szabgab at gmail.com');
With this change it works now.
Gabor
On Sun, Mar 13, 2011 at 11:19 AM, Gabor Szabo <szabgab at gmail.com> wrote:
> Hi,
>
> I hope the dev list is where I am supposed to ask
> plugin development related questions. If not please,
> direct me to the right place.
>
> I am trying to write a plugin in Perl and have certain issues.
> After some fight I managed to compile and setup Pidgin and
> added a perl plugin.
>
>
> I have two gmail accounts. One (szabgab.other) was added to Pidgin.
> With the other one (szabgab) I am logged in to Gmail.
> When I launch pidgin, after a while I see the icon next to my "buddy"
> turn to green circle indicating it is online. Still the following code keeps
> telling me the buddy is off-line.
> I even tried to browse away from my gmail account and back again.
> That changed the icon but the perl script kept telling me offline.
>
> Any idea what am I doing incorrectly and how can I make this work?
>
> #!/usr/bin/perl
> use strict;
> use warnings;
> use 5.010;
>
> # run the following before launching the script or pidgin:
> # export LD_PRELOAD='/opt/pidgin/lib/libpurple.so
> /opt/pidgin/lib/purple-2/perl.so'
>
> use lib '/opt/pidgin/lib/purple-2/perl';
>
> use Purple;
>
> our %PLUGIN_INFO = (
> perl_api_version => 2,
> name => "Perl Test Plugin",
> version => "0.1",
> summary => "Test plugin for the Perl interpreter.",
> description => "Your description here",
> author => "John H. Kelm <johnhkelm\@gmail.com",
> url => "http://pidgin.im",
> load => "plugin_load",
> # unload => "plugin_unload"
> # plugin_action_sub => 'plugin_action_cb',
> );
>
> sub plugin_init {
> my $plugin = shift;
> say "plugin_init";
> return %PLUGIN_INFO;
> }
>
> sub timeout_cb {
> my $plugin = shift;
> say "timeout $plugin " . time;
> send_message();
>
> return 1;
> }
>
> sub send_message {
>
> my $account_name = 'szabgab.other at gmail.com/Home';
> my $protocol = 'prpl-jabber';
> my $acc = Purple::Accounts::find($account_name, $protocol);
>
> return if not $acc->is_connected;
>
> my $buddy = Purple::Find::buddy($acc, "szabgab");
> my $pres = $buddy->get_presence;
> my $online = $pres->is_online;
> say $online ? "online" : "offline";
>
> return 1;
> }
>
> sub plugin_load {
> my $plugin = shift;
> say "plugin_load";
> Purple::timeout_add($plugin, 2, \&timeout_cb, $plugin);
>
> return;
> }
>
>
>
> regards
> Gabor
> http://szabgab.com/
>
More information about the Devel
mailing list