The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

KGS::Listener::Room - handle room-related messages for you.

SYNOPSIS

  use base KGS::Listener::Room;

  # maybe overwrite new
  sub new { ... }

  sub event_update_games {
     ...
  }

  sub event_roominfo {
     ...
  }

DESCRIPTION

None yet. Please see KGS::Listener and KGS::Listener::Channel.

Automatically listens and handles the following messages for you and calls event methods:

  join_room: part_room: upd_games: desc_room: msg_room: upd_game del_game

METHODS

$room->join

Uses $room->{channel} and $room->{conn}{name} to join the channel.

See event_join.

$room->part

Departs from the room. See event_part.

$room->say ($msg)

Utter something in the room.

$room->req_roominfo

Request a room description. See event_roominfo.

$room->req_games

Request a non-incremental update of the game list. Should be called every minute or so.

See event_update_games.

$room->event_join

Called when the user successfully joined the room. This can be called late, after messages for this room have already been received.

$room->event_part

Called when the user left the room.

$room->event_update_games ($add, $update, $remove)

Called whenever the game list is updated, either incrementally or on request. The three parameters are arrayrefs with lists of <KGS::Game>s that have been newly added ($add), existed but got parameters (movecount, status etc.) updated ($update) or have been removed $remove.

You do not need to use these arguments, as the list of games is always kept up-to-date in $room->{games}{id}{KGS::Game}, so you can just use this hash instead.

$room->event_update_roominfo

Called whenever the room info gets updated, either on request or server-initiated.

The owner name can be accessed as $room->{owner}, while the descriptive text is stored in $room->{description}.

   $self->{owner}       = $msg->{owner};
   $self->{description} = $msg->{description};