in reply to schedule alarms with POE and Bot::BasicBot::Pluggable ?

In the init method of your plugin module, create a POE session with object states, so that its event handlers will have access to the plugin module (as $self). Then store the session id in the object so that your pluggable handlers can easily send events to the session like this:

$poe_kernel->post($self->{session_id}, 'add_timer', 'something');

Replies are listed 'Best First'.
Re^2: schedule alarms with POE and Bot::BasicBot::Pluggable ?
by brengo (Acolyte) on Jul 20, 2011 at 22:27 UTC

    Thank you Hinrik! Great that you as the maintainer find the time to help me out!

    I am having troubles though. I really tried to get some code out of your words but I failed. The documentation on POE was no help for me (do you have any other suggestions on where to read/learn about poe than on the POE website?). I added to the init method:

    sub init { my $self = shift; $self->config( { user_sc => 2, } ); POE::Session->create( inline_states => { _start => sub { my ($kernel, $heap) = @_[KERNEL, HEAP]; my $session_id = $_[SESSION] -> ID; $self->config( { user_session_id => $session_id, } ); }, test => sub { }, } ); }

    This, however, returns the following error:

    Error loading Can't load MyModule: Bareword "KERNEL" not allowed while + "strict subs" in use at ./MyModule.pm line 34.

    So apart from this error (how do I get rid of it?):
    Did I get the session id the right way? Did I use the right way to store it in $self?