---
name: "AnyEvent::XMPP::Ext::MUC::Room"
section: "3pm"
platform: "linux"
package: "perl-anyevent-xmpp"
version: "0.55-7"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/AnyEvent::XMPP::Ext::MUC::Room"
---

# AnyEvent::XMPP::Ext::MUC::Room(3pm)

Room class

## 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.
