Ejemplo n.º 1
0
    def __init__(self, *args, **kw):
        """Create a new log mixin."""

        if not getattr(self, "log", None):
            self.log = WhistlerLog()

        self.register_handler(EVENT_MESSAGE, self.save_log_message)
Ejemplo n.º 2
0
class LogMixin(object):
    """Implements a basic log features for a :class:`WhistlerBot`."""
    def __init__(self, *args, **kw):
        """Create a new log mixin."""

        if not getattr(self, "log", None):
            self.log = WhistlerLog()

        self.register_handler(EVENT_MESSAGE, self.save_log_message)

    def save_log_message(self, message, args):
        self.log.info("[%s] <%s> %s" % (
            "room" if message["type"] == "groupchat" else "chat",
            message["from"],
            message["body"],
        ))
Ejemplo n.º 3
0
    def __init__(self, *args, **kw):
        """Create a new log mixin."""

        if not getattr(self, "log", None):
            self.log = WhistlerLog()

        self.register_handler(EVENT_MESSAGE, self.save_log_message)
Ejemplo n.º 4
0
class LogMixin(object):
    """Implements a basic log features for a :class:`WhistlerBot`."""

    def __init__(self, *args, **kw):
        """Create a new log mixin."""

        if not getattr(self, "log", None):
            self.log = WhistlerLog()

        self.register_handler(EVENT_MESSAGE, self.save_log_message)

    def save_log_message(self, message, args):
        self.log.info("[%s] <%s> %s" % (
            "room" if message["type"] == "groupchat" else "chat",
            message["from"],
            message["body"],
         ))
Ejemplo n.º 5
0
    def __init__(self, jid, password, server=None, rooms=None,
            resource=None, mention=None, log=None, users=[], use_tls=False, ignore_ssl_cert=True):
        """Initialize a Whistler bot.

        Create a new :class:`WhistlerBot` object, the :func:`__init__`
        receive the following parameters:

        :param `jid`: a valid JID atom to identify the bot user.
        :param `password`: a plaintext password to identify the bot user.
        :param `server`: a tuple in the form *server*, *port* which sepcify
            the host to connect to, if not provided the server then use the
            JID domain instead.
        :param `rooms`: a :class:`list` of rooms to be autojoin in.
        :param `resource`: the XMPP resource string, or autogenerated one if
            not provided.
        :param `log`: a :class:`WhistlerLog` to log bot messages to, or
            *stdout* if none is provided.
        :param `users`: a :class:`set` of valid JID as strings which
            identify master users.
        :param use_tls: if set to true, try to use TLS where available
        :param ignore_ssl_cert: if set to false raise an exception when
            certificate do not match with hostname or any other kind of
            invalid certificate.
        """
        self.user = jid
        self.jid = jid
        self.password = password
        self.server = server
        self.log = log or WhistlerLog()
        self.use_tls = use_tls
        self.ignore_ssl_cert = ignore_ssl_cert
        self._initial_users = users
        self.handlers = { EVENT_CONNECT:  [], EVENT_DISCONNECT:  [],
                          EVENT_REGISTER: [], EVENT_JOIN:        [],
                          EVENT_LEAVE:    [], EVENT_UNREGISTER:  [],
                          EVENT_MESSAGE:  [], EVENT_MUC_MESSAGE: [],
                          EVENT_MUC_COMMAND: [], EVENT_CHANGE_STATUS: []}

        self.client = None

        self.resource = resource or self.__class__.__name__.lower() + \
                                    str(random.getrandbits(32))
        self.mention = mention or self.resource

        self.jid += "/" + self.resource
        self._rooms = set(rooms or [])