slixmpp.plugins.xep_0444.stanza

1.6 Documentation

Contents

Source code for slixmpp.plugins.xep_0444.stanza

"""
    Slixmpp: The Slick XMPP Library
    Copyright (C) 2020 Mathieu Pasquet
    This file is part of Slixmpp.

    See the file LICENSE for copying permission.
"""

from typing import Set, Iterable
from slixmpp.xmlstream import ElementBase
try:
    from emoji import UNICODE_EMOJI
except ImportError:
    UNICODE_EMOJI = None


NS = 'urn:xmpp:reactions:0'

[docs]class Reactions(ElementBase): name = 'reactions' plugin_attrib = 'reactions' namespace = NS interfaces = {'id', 'values'}
[docs] def get_values(self, *, all_chars=False) -> Set[str]: """"Get all reactions as str""" reactions = set() for reaction in self: value = reaction['value'] if UNICODE_EMOJI and not all_chars: if value in UNICODE_EMOJI: reactions.add(reaction['value']) else: reactions.add(reaction['value']) return reactions
[docs] def set_values(self, values: Iterable[str], *, all_chars=False): """"Set all reactions as str""" for element in self.xml.findall('reaction'): self.xml.remove(element) for reaction_txt in values: reaction = Reaction() reaction.set_value(reaction_txt, all_chars=all_chars) self.append(reaction)
[docs]class Reaction(ElementBase): name = 'reaction' namespace = NS interfaces = {'value'}
[docs] def get_value(self) -> str: return self.xml.text
[docs] def set_value(self, value: str, *, all_chars=False): if UNICODE_EMOJI and not all_chars: if not value in UNICODE_EMOJI: raise ValueError("%s is not a valid emoji" % value) self.xml.text = value

Contents