NAME¶
AnyEvent::XMPP::Ext::MUC::Room - Room class
SYNOPSIS¶
DESCRIPTION¶
This module represents a room handle for a MUC.
METHODS¶
- new (%args)
- get_user ($nick)
- This method returns the user with the $nick in the
room.
- get_me
- This method returns the AnyEvent::XMPP::Ext::MUC::User
object of yourself in the room. If will return undef if we are not in the
room anymore.
- get_user_jid ($jid)
- This method looks whether a user with the JID $jid exists
in the room. That means whether the node and domain part of the JID match
the rooms node and domain part, and the resource part of the JID matches a
joined nick.
- get_users
- This method returns the list of occupants as
AnyEvent::XMPP::Ext::MUC::User objects.
- make_instant ($cb)
- If you just created a room you can create an instant room
with this method instead of going through room configuration for a
reserved room.
If you want to create a reserved room instead don't forget to unset the
"create_instant" argument of the "join_room" method of
AnyEvent::XMPP::Ext::MUC!
See also the "request_configuration" method below for the reserved
room config.
$cb is the callback that will be called when the instant room creation is
finished. If successful the first argument will be this room object
($self), if unsuccessful the first argument will be undef and the second
will be a AnyEvent::XMPP::Error::IQ object.
- request_configuration ($cb)
- This method requests the room configuration. When the
configuration form or an error arrives $cb will be called. The first
argument to the callback will be a AnyEvent::XMPP::Ext::DataForm with the
room configuration form or undef in case of an error. The second argument
will be a AnyEvent::XMPP::Error::MUC error object if an error occurred or
undef if no error occurred.
If you made an answer form you can send it via the
"send_configuration" method below.
Here is an example:
$room->request_configuration (sub {
my ($form, $err) = @_;
$form or return;
my $af = AnyEvent::XMPP::Ext::DataForm->new;
$af->make_answer_form ($form);
$af->set_field_value ('muc#roomconfig_maxusers', 20);
$af->clear_empty_fields;
$roomhdl->send_configuration ($af, sub {
# ...
});
});
- "send_configuration ($answer_form, $cb)"
- This method sends the answer form to a configuration
request to the room. $answer_form should be a
AnyEvent::XMPP::Ext::DataForm object containig the answer form with the
changed configuration.
The first argument of $cb will be a true value if the configuration change
was successful. The second argument of $cb will be a
"AnyEvent::XMPP::Error::IQ" object if the configuration change
was not successful.
- make_message (%args)
- This method constructs a AnyEvent::XMPP::Ext::MUC::Message
with a connection to this room.
%args are further arguments for the constructor of
AnyEvent::XMPP::Ext::MUC::Message. The default "to" argument for
the message is the room and the "type" will be 'groupchat'.
- send_part ($msg, $cb,
$timeout )
- This lets you part the room, $msg is an optional part
message and can be undef if no custom message should be generated.
$cb is called when we successfully left the room or after $timeout seconds.
The default for $timeout is 60.
The first argument to the call of $cb will be undef if we successfully
parted, or a true value when the timeout hit. Even if we timeout we
consider ourself parted (and a 'leave' event is generated).
- users
- Returns a list of AnyEvent::XMPP::Ext::MUC::User objects
which are in this room.
- jid
- Returns the bare JID of this room.
- nick_jid
- Returns the full JID of yourself in the room.
- is_connected
- Returns true if this room is still connected (but maybe not
joined (yet)).
- connection
- If the room is still joined this method will return the
connection on which the room is connected.
- is_joined
- Returns true if this room is still joined (and
connected).
- change_nick ($newnick)
- This method lets you change your nickname in this
room.
- change_subject ($newsubject)
- This methods changes the subject of the room.
AUTHOR¶
Robin Redeker, "<elmex at ta-sa.org>", JID: "<elmex at
jabber.org>"
COPYRIGHT & LICENSE¶
Copyright 2007, 2008 Robin Redeker, all rights reserved.
This program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.