Skip to content
Back to top
View this page

# XEP-0444: Message Reactions

XEP-0444 on xmpp.org

class slixmpp.plugins.xep_0444.XEP_0444(xmpp, config=None)

  XEP-0444: Message Reactions.

  If the python-emoji library is present, setting emojis as reactions will be checked against known emoji, and trying to set non-emoji characters as reactions will raise a `ValueError`. This behavior can be disabled by passing `all_chars=True` to the `Reaction.set_value()` call.

  send_reactions(to, to_id, reactions, *, store=True)

    Send reactions related to a message.

    Parameters:

      - to (`JID`) – JID to which the reactions will be sent.

      - to_id (`str`) – ID of the message being reacted to.

      - reactions (`Iterable`[`str`]) – Iterable object containing all reactions to set.

      - store – If the store hint should be set on the message.

  static set_reactions(message, to_id, reactions)

    Add reactions to a Message object.

    Parameters:

      - message (`Message`) – Message to enrich with reactions.

      - to_id (`str`) – ID of the message the reactions are for.

      - reactions (`Iterable`[`str`]) – Iterable object containing all reactions to set.

## Stanza elements

class slixmpp.plugins.xep_0444.stanza.Reaction(xml=None, parent=None)

  Single reaction element.

      <reaction>💜</reaction>

  get_value()
    Return type:

      `str` | `None`

  interfaces: ClassVar[set[str]] = {'value'}

    The set of keys that the stanza provides for accessing and manipulating the underlying XML object. This set may be augmented with the `plugin_attrib` value of any registered stanza plugins.

  name: ClassVar[str] = 'reaction'

    The XML tag name of the element, not including any namespace prefixes. For example, an `ElementBase` object for `<message />` would use `name = 'message'`.

  namespace: str = 'urn:xmpp:reactions:0'

    The XML namespace for the element. Given `<foo xmlns="bar" />`, then `namespace = "bar"` should be used. The default namespace is `jabber:client` since this is being used in an XMPP library.

  set_value(value, *, all_chars=False)
    Return type:

      `None`

class slixmpp.plugins.xep_0444.stanza.Reactions(xml=None, parent=None)

  Reactions element.

      <reactions id='744f6e18-a57a-11e9-a656-4889e7820c76' xmlns='urn:xmpp:reactions:0'>
        <reaction>👋</reaction>
        <reaction>🐢</reaction>
      </reactions>

  get_values(*, all_chars=False)

    “Get all reactions as str

    Return type:

      `set`[`str`]

  interfaces: ClassVar[set[str]] = {'id', 'values'}

    The set of keys that the stanza provides for accessing and manipulating the underlying XML object. This set may be augmented with the `plugin_attrib` value of any registered stanza plugins.

  name: ClassVar[str] = 'reactions'

    The XML tag name of the element, not including any namespace prefixes. For example, an `ElementBase` object for `<message />` would use `name = 'message'`.

  namespace: str = 'urn:xmpp:reactions:0'

    The XML namespace for the element. Given `<foo xmlns="bar" />`, then `namespace = "bar"` should be used. The default namespace is `jabber:client` since this is being used in an XMPP library.

  plugin_attrib: ClassVar[str] = 'reactions'

    For `ElementBase` subclasses which are intended to be used as plugins, the `plugin_attrib` value defines the plugin name. Plugins may be accessed by using the `plugin_attrib` value as the interface. An example using `plugin_attrib = 'foo'`:

        register_stanza_plugin(Message, FooPlugin)
        msg = Message()
        msg['foo']['an_interface_from_the_foo_plugin']

  set_values(values, *, all_chars=False)

    “Set all reactions as str

    Return type:

      `None`