Source code for irclog.messages

""":mod:`irclog.messages` --- Various message types
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Hierarchy
---------

It provides a hierarchy of IRC log message types.

- :class:`BaseMessage`

 - :class:`Message`

  - :class:`PublicMessage`
  - :class:`ActionMessage`
  - :class:`NoticeMessage`

 - :class:`BaseNickMessage`

  - :class:`NickMessage`
  - :class:`SelfNickMessage`

 - :class:`JoinMessage`
 - :class:`ModeMessage`
 - :class:`PartMessage`
 - :class:`QuitMessage`
 - :class:`KickMessage`
 - :class:`BaseTopicMessage`

  - :class:`TopicMessage`
  - :class:`NoTopicMessage`


Objects
-------

"""
import datetime


[docs]class BaseMessage(object): """Abstract base type for all IRC log messages. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` .. attribute:: messaged_at The naive :class:`datetime.datetime` logged. """ __slots__ = "messaged_at", def __init__(self, messaged_at): if not isinstance(messaged_at, datetime.datetime): raise TypeError("messaged_at must be a datetime.datetime, not " + repr(messaged_at)) self.messaged_at = messaged_at
[docs]class Message(BaseMessage): """Abstract base type for :class:`PublicMessage`, :class:`ActionMessage` and :class:`NoticeMessage`. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param line: a message body :type line: :class:`basestring` .. attribute:: nick The nickname. .. attribute:: line The message body. """ __slots__ = "nick", "line" def __init__(self, messaged_at, nick, line): BaseMessage.__init__(self, messaged_at) self.nick = unicode(nick) self.line = unicode(line)
[docs]class PublicMessage(Message): """Most commonly used message type. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param line: a message body :type line: :class:`basestring` """
[docs]class ActionMessage(Message): """``ACTION`` message type. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param line: a message body :type line: :class:`basestring` """
[docs]class NoticeMessage(Message): """Notice message type. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param line: a message body :type line: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` .. attribute:: channel The channel name. """ __slots__ = "channel", def __init__(self, messaged_at, nick, line, channel): Message.__init__(self, messaged_at, nick, line) self.channel = unicode(channel)
[docs]class BaseNickMessage(BaseMessage): """Abstract base type for nickname changing message types. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param to: a new nickname :type to: :class:`basestring` .. attribute:: to The new nickname. """ __slots__ = "to", def __init__(self, messaged_at, to): BaseMessage.__init__(self, messaged_at) self.to = unicode(to)
[docs]class NickMessage(BaseNickMessage): """Nickname changing message type. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param from_: a old nickname :type from_: :class:`basestring` :param to: a new nickname :type to: :class:`basestring` .. attribute:: from_ The old nickname. """ __slots__ = "from_", def __init__(self, messaged_at, from_, to): BaseNickMessage.__init__(self, messaged_at, to) self.from_ = unicode(from_)
[docs]class SelfNickMessage(BaseNickMessage): """My nickname chaning message type. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param to: a new nickname :type to: :class:`basestring` """
[docs]class JoinMessage(BaseMessage): """Join message type. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param ident: an ident :type ident: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` .. attribute:: nick The nickname. .. attribute:: ident The ident. .. attribute:: channel The channel name. """ __slots__ = "nick", "ident", "channel" def __init__(self, messaged_at, nick, ident, channel): BaseMessage.__init__(self, messaged_at) self.nick = unicode(nick) self.ident = unicode(ident) self.channel = unicode(channel)
[docs]class ModeMessage(BaseMessage): """``MODE`` message type. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param server: a server :type server: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` :param modelist: a mode list :param nick: a nickname :type nick: :class:`basestring` .. attribute:: server The server. .. attribute:: channel The channel name. .. attribute:: modelist The mode list. .. attribute:: nick The nickname. """ __slots__ = "server", "channel", "modelist", "nick" def __init__(self, messaged_at, server, channel, modelist, nick): BaseMessage.__init__(self, messaged_at) self.server = unicode(server) self.channel = unicode(channel) self.modelist = unicode(modelist) self.channel = unicode(channel) self.nick = unicode(nick)
[docs]class PartMessage(BaseMessage): """``PART`` message type. :param nick: a nickname :type nick: :class:`basestring` :param ident: an ident :type ident: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` :param reason: a reason :type reason: :class:`basestring` .. attribute:: nick The nickname. .. attribute:: ident The ident. .. attribute:: channel The channel name. .. attribute:: reason The reason. """ __slots__ = "nick", "ident", "channel", "reason" def __init__(self, messaged_at, nick, ident, channel, reason): BaseMessage.__init__(self, messaged_at) self.nick = unicode(nick) self.ident = unicode(ident) self.channel = unicode(channel) self.reason = unicode(reason)
[docs]class QuitMessage(BaseMessage): """Quiting message type. :param nick: a nickname :type nick: :class:`basestring` :param ident: an ident :type ident: :class:`basestring` :param reason: a reason :type reason: :class:`basestring` .. attribute:: nick The nickname. .. attribute:: ident The ident. .. attribute:: reason The reason. """ __slots__ = "nick", "ident", "reason" def __init__(self, messaged_at, nick, ident, reason): BaseMessage.__init__(self, messaged_at) self.nick = unicode(nick) self.ident = unicode(ident) self.reason = unicode(reason)
[docs]class KickMessage(BaseMessage): """Kick message type. :param nick: a nickname that was kicked :type nick: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` :param by: a nickname that kicks :type by: :class:`basestring` :param reason: a reason :type reason: :class:`basestring` .. attribute:: nick The nickname that was kicked. .. attribute:: channel The channel name. .. attribute:: by The nickname that kicks. .. attribute:: reason The reason. """ __slots__ = "nick", "channel", "by", "reason", def __init__(self, messaged_at, nick, channel, by, reason): BaseMessage.__init__(self, messaged_at) self.nick = unicode(nick) self.channel = unicode(channel) self.by = unicode(by) self.reason = unicode(reason)
[docs]class BaseTopicMessage(BaseMessage): """Abstract base class for topic changing message types. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` .. attribute:: nick The nickname. .. attribute:: channel The channel name. """ __slots__ = "nick", "channel" def __init__(self, messaged_at, nick, channel): BaseMessage.__init__(self, messaged_at) self.nick = unicode(nick) self.channel = unicode(channel)
[docs]class TopicMessage(BaseTopicMessage): """Topic changing message types. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` :param topic: a new topic :type topic: :class:`basestring` .. attribute:: topic The new topic """ __slots__ = "topic" def __init__(self, messaged_at, nick, channel, topic): BaseTopicMessage.__init__(self, messaged_at, nick, channel) self.topic = unicode(topic)
[docs]class NoTopicMessage(BaseTopicMessage): """Empty topic message types. :param messaged_at: a :class:`datetime.datetime` logged :type messaged_at: :class:`datetime.datetime` :param nick: a nickname :type nick: :class:`basestring` :param channel: a channel name :type channel: :class:`basestring` """