# evennia.server.portal.irc

This connects to an IRC network/channel and launches an ‘bot’ onto it. The bot then pipes what is being said between the IRC channel and one or more Evennia channels.

`evennia.server.portal.irc.``parse_ansi_to_irc`(string)

  Parse |-type syntax and replace with IRC color markers

  Parameters

    string (str) – String to parse for ANSI colors.

  Returns

    parsed_string (str) – String with replaced ANSI colors.

`evennia.server.portal.irc.``parse_irc_to_ansi`(string)

  Parse IRC mIRC color syntax and replace with Evennia ANSI color markers

  Parameters

    string (str) – String to parse for IRC colors.

  Returns

    parsed_string (str) – String with replaced IRC colors.

class `evennia.server.portal.irc.``IRCBot`

  Bases: `twisted.words.protocols.irc.IRCClient`, `evennia.server.session.Session`

  An IRC bot that tracks activity in a channel as well as sends text to it when prompted

  `lineRate` = 1
  `nickname` = None
  `logger` = None
  `factory`: Optional[twisted.internet.protocol.Factory] = None
  `channel` = None
  `sourceURL` = 'http://code.evennia.com'
  `signedOn`()

    This is called when we successfully connect to the network. We make sure to now register with the game as a full session.

  `disconnect`(reason='')

    Called by sessionhandler to disconnect this protocol.

    Parameters

      reason (str) – Motivation for the disconnect.

  `at_login`()
  `privmsg`(user, channel, msg)

    Called when the connected channel receives a message.

    Parameters

      - user (str) – User name sending the message.

      - channel (str) – Channel name seeing the message.

      - msg (str) – The message arriving from channel.

  `action`(user, channel, msg)

    Called when an action is detected in channel.

    Parameters

      - user (str) – User name sending the message.

      - channel (str) – Channel name seeing the message.

      - msg (str) – The message arriving from channel.

  `get_nicklist`()

    Retrieve name list from the channel. The return is handled by the catch methods below.

  `irc_RPL_NAMREPLY`(prefix, params)

    “Handles IRC NAME request returns (nicklist)

  `irc_RPL_ENDOFNAMES`(prefix, params)

    Called when the nicklist has finished being returned.

  `pong`(user, time)

    Called with the return timing from a PING.

    Parameters

      - user (str) – Name of user

      - time (float) – Ping time in secs.

  `data_in`(text=None, **kwargs)

    Data IRC -> Server.

    Keyword Arguments

      - text (str) – Ingoing text.

      - kwargs (any) – Other data from protocol.

  `send_channel`(*args, **kwargs)

    Send channel text to IRC channel (visible to all). Note that we don’t handle the “text” send (it’s rerouted to send_default which does nothing) - this is because the IRC bot is a normal session and would otherwise report anything that happens to it to the IRC channel (such as it seeing server reload messages).

    Parameters

      text (str) – Outgoing text

  `send_privmsg`(*args, **kwargs)

    Send message only to specific user.

    Parameters

      text (str) – Outgoing text.

    Keyword Arguments

      user (str) – the nick to send privately to.

  `send_request_nicklist`(*args, **kwargs)

    Send a request for the channel nicklist. The return (handled by self.irc_RPL_ENDOFNAMES) will be sent back as a message with type **nicklist’.

  `send_ping`(*args, **kwargs)

    Send a ping. The return (handled by self.pong) will be sent back as a message of type ‘ping’.

  `send_reconnect`(*args, **kwargs)

    The server instructs us to rebuild the connection by force, probably because the client silently lost connection.

  `send_default`(*args, **kwargs)

    Ignore other types of sends.

class `evennia.server.portal.irc.``IRCBotFactory`(sessionhandler, uid=None, botname=None, channel=None, network=None, port=None, ssl=None)

  Bases: `twisted.internet.protocol.ReconnectingClientFactory`

  Creates instances of IRCBot, connecting with a staggered increase in delay

  `initialDelay` = 1
  `factor` = 1.5
  `maxDelay` = 60
  `__init__`(sessionhandler, uid=None, botname=None, channel=None, network=None, port=None, ssl=None)

    Storing some important protocol properties.

    Parameters

      sessionhandler (SessionHandler) – Reference to the main Sessionhandler.

    Keyword Arguments

      - uid (int) – Bot user id.

      - botname (str) – Bot name (seen in IRC channel).

      - channel (str) – IRC channel to connect to.

      - network (str) – Network address to connect to.

      - port (str) – Port of the network.

      - ssl (bool) – Indicates SSL connection.

  `buildProtocol`(addr)

    Build the protocol and assign it some properties.

    Parameters

      addr (str) – Not used; using factory data.

  `startedConnecting`(connector)

    Tracks reconnections for debugging.

    Parameters

      connector (Connector) – Represents the connection.

  `clientConnectionFailed`(connector, reason)

    Called when Client failed to connect.

    Parameters

      - connector (Connection) – Represents the connection.

      - reason (str) – The reason for the failure.

  `clientConnectionLost`(connector, reason)

    Called when Client loses connection.

    Parameters

      - connector (Connection) – Represents the connection.

      - reason (str) – The reason for the failure.

  `reconnect`()

    Force a reconnection of the bot protocol. This requires de-registering the session and then reattaching a new one, otherwise you end up with an ever growing number of bot sessions.

  `start`()

    Connect session to sessionhandler.