class documentation

Internet Relay Chat client protocol, with sprinkles.

In addition to providing an interface for an IRC client protocol, this class also contains reasonable implementations of many common CTCP methods.

TODO

  • Limit the length of messages sent (because the IRC server probably does).
  • Add flood protection/rate limiting for my CTCP replies.
  • NickServ cooperation. (a mix-in?)
Method __getstate__ Undocumented
Method action Called when I see a user perform an ACTION on a channel.
Method alterCollidedNick Generate an altered version of a nickname that caused a collision in an effort to create an unused related name for subsequent registration.
Method away Mark this client as away.
Method back Clear the away status.
Method badMessage When I get a message that's so broken I can't use it.
Method bounce Called with information about where the client should reconnect.
Method connectionLost Called when the connection is shut down.
Method connectionMade Called when a connection is made.
Method created Called with creation date information about the server, usually at logon.
Method ctcpMakeQuery Send one or more extended messages as a CTCP query.
Method ctcpMakeReply Send one or more extended messages as a CTCP reply.
Method ctcpQuery Dispatch method for any CTCP queries received.
Method ctcpQuery_ACTION Undocumented
Method ctcpQuery_CLIENTINFO A master index of what CTCP tags this client knows.
Method ctcpQuery_DCC Initiate a Direct Client Connection
Method ctcpQuery_ERRMSG Undocumented
Method ctcpQuery_FINGER Undocumented
Method ctcpQuery_PING Undocumented
Method ctcpQuery_SOURCE Undocumented
Method ctcpQuery_TIME Undocumented
Method ctcpQuery_USERINFO Undocumented
Method ctcpQuery_VERSION Undocumented
Method ctcpReply Dispatch method for any CTCP replies received.
Method ctcpReply_PING Undocumented
Method ctcpUnknownQuery Fallback handler for unrecognized CTCP queries.
Method ctcpUnknownReply Called when a fitting ctcpReply_ method is not found.
Method dataReceived Protocol.dataReceived. Translates bytes into lines, and calls lineReceived (or rawDataReceived, depending on mode.)
Method dcc_ACCEPT Undocumented
Method dcc_CHAT Undocumented
Method dcc_RESUME Undocumented
Method dcc_SEND Undocumented
Method dccAcceptResume Send a DCC ACCEPT response to clients who have requested a resume.
Method dccDoAcceptResume Called when a client has verified and accepted a DCC resume request made by us. By default it will do nothing.
Method dccDoChat Undocumented
Method dccDoResume Called when a client is trying to resume an offered file via DCC send. It should be either replied to with a DCC ACCEPT or ignored (default).
Method dccDoSend Called when I receive a DCC SEND offer from a client.
Method dccResume Send a DCC RESUME request to another user.
Method dccSend This is supposed to send a user a file directly. This generally doesn't work on any client, and this method is included only for backwards compatibility and completeness.
Method describe Strike a pose.
Method getChannelModeParams Get channel modes that require parameters for correct parsing.
Method getUserModeParams Get user modes that require parameters for correct parsing.
Method handleCommand Determine the function to call for the given command and call it with the given arguments.
Method invite Attempt to invite user to channel
Method irc_ERR_ERRONEUSNICKNAME Called when we try to register or change to an illegal nickname.
Method irc_ERR_NICKNAMEINUSE Called when we try to register or change to a nickname that is already taken.
Method irc_ERR_PASSWDMISMATCH Called when the login was incorrect.
Method irc_JOIN Called when a user joins a channel.
Method irc_KICK Called when a user is kicked from a channel.
Method irc_MODE Parse a server mode change message.
Method irc_NICK Called when a user changes their nickname.
Method irc_NOTICE Called when a user gets a notice.
Method irc_PART Called when a user leaves a channel.
Method irc_PING Called when some has pinged us.
Method irc_PRIVMSG Called when we get a message.
Method irc_QUIT Called when a user has quit.
Method irc_RPL_BOUNCE Undocumented
Method irc_RPL_CREATED Undocumented
Method irc_RPL_ENDOFMOTD RPL_ENDOFMOTD indicates the end of the message of the day messages. Deliver the accumulated lines to receivedMOTD.
Method irc_RPL_ISUPPORT Undocumented
Method irc_RPL_LUSERCHANNELS Undocumented
Method irc_RPL_LUSERCLIENT Undocumented
Method irc_RPL_LUSERME Undocumented
Method irc_RPL_LUSEROP Undocumented
Method irc_RPL_MOTD Undocumented
Method irc_RPL_MOTDSTART Undocumented
Method irc_RPL_MYINFO Undocumented
Method irc_RPL_NOTOPIC Undocumented
Method irc_RPL_TOPIC Called when the topic for a channel is initially reported or when it subsequently changes.
Method irc_RPL_WELCOME Called when we have received the welcome from the server.
Method irc_RPL_YOURHOST Undocumented
Method irc_TOPIC Someone in the channel set the topic.
Method irc_unknown Undocumented
Method isupport Called with various information about what the server supports.
Method join Join a channel.
Method joined Called when I finish joining a channel.
Method kick Attempt to kick a user from a channel.
Method kickedFrom Called when I am kicked from a channel.
Method leave Leave a channel.
Method left Called when I have left a channel.
Method lineReceived Override this for when each line is received.
Method luserChannels Called with the number of channels existent on the server.
Method luserClient Called with information about the number of connections, usually at logon.
Method luserMe Called with information about the server connected to.
Method luserOp Called with the number of ops logged on to the server.
Method mode Change the modes on a user or channel.
Method modeChanged Called when users or channel's modes are changed.
Method msg Send a message to a user or channel.
Method myInfo Called with information about the server, usually at logon.
Method nickChanged Called when my nick has been changed.
Method notice Send a notice to a user.
Method noticed Called when I have a notice from a user to me or a channel.
Method ping Measure round-trip delay to another IRC client.
Method pong Called with the results of a CTCP PING query.
Method privmsg Called when I have a message from a user to me or a channel.
Method quirkyMessage This is called when I receive a message which is peculiar, but not wholly indecipherable.
Method quit Disconnect from the server
Method receivedMOTD I received a message-of-the-day banner from the server.
Method register Login to the server.
Method say Send a message to a channel
Method sendLine Sends a line to the other end of the connection.
Method setNick Set this client's nickname.
Method signedOn Called after successfully signing on to the server.
Method startHeartbeat Start sending PING messages every IRCClient.heartbeatInterval seconds to keep the connection to the server alive during periods of no activity.
Method stopHeartbeat Stop sending PING messages to keep the connection to the server alive.
Method topic Attempt to set the topic of the given channel, or ask what it is.
Method topicUpdated In channel, user changed the topic to newTopic.
Method userJoined Called when I see another user joining a channel.
Method userKicked Called when I observe someone else being kicked from a channel.
Method userLeft Called when I see another user leaving a channel.
Method userQuit Called when I see another user disconnect from the network.
Method userRenamed A user changed their name from oldname to newname.
Method whois Retrieve user information about the given nickname.
Method yourHost Called with daemon information about the server, usually at logon.
Class Variable __pychecker__ Undocumented
Class Variable dcc_destdir Undocumented
Class Variable delimiter Undocumented
Class Variable performLogin Undocumented
Instance Variable dcc_sessions Undocumented
Instance Variable erroneousNickFallback Default nickname assigned when an unregistered client triggers an ERR_ERRONEUSNICKNAME while trying to register with an illegal nickname.
Instance Variable fingerReply Sent in reply to a FINGER CTCP query. If None, no FINGER reply will be sent.
Instance Variable heartbeatInterval Interval, in seconds, to send PING messages to the server as a form of keepalive, defaults to 120 seconds. Use None to disable the heartbeat.
Instance Variable hostname Host name of the IRC server the client is connected to. Initially the host name is None and later is set to the host name from which the RPL_WELCOME message is received.
Instance Variable lineRate Minimum delay between lines sent to the server. If None, no delay will be imposed.
Instance Variable motd Either None or, between receipt of RPL_MOTDSTART and RPL_ENDOFMOTD, a list of str, each of which is the content of an RPL_MOTD message.
Instance Variable nickname Nickname the client will use.
Instance Variable password Password used to log on to the server. May be None.
Instance Variable realname Supplied to the server during login as the "Real name" or "ircname". May be None.
Instance Variable sourceURL CTCP SOURCE reply, a URL where the source code of this client may be found. If None, no SOURCE reply will be sent.
Instance Variable supported Available ISUPPORT features on the server
Instance Variable userinfo Sent in reply to a USERINFO CTCP query. If None, no USERINFO reply will be sent. "This is used to transmit a string which is settable by the user (and never should be set by the client)."
Instance Variable username Supplied to the server during login as the "User name". May be None
Instance Variable versionEnv CTCP VERSION reply, environment the client is running in.
Instance Variable versionName CTCP VERSION reply, client name. If None, no VERSION reply will be sent.
Instance Variable versionNum CTCP VERSION reply, client version.
Method _createHeartbeat Create the heartbeat LoopingCall.
Method _reallySendLine Undocumented
Method _safeMaximumLineLength Estimate a safe maximum line length for the given command.
Method _sendHeartbeat Send a PING message to the IRC server as a form of keepalive.
Method _sendLine Undocumented
Method _sendMessage Send a message or notice to a user or channel.
Constant _MAX_PINGRING Undocumented
Instance Variable _attemptedNick The nickname that will try to get registered. It may change if it is illegal or already taken. nickname becomes the _attemptedNick that is successfully registered.
Instance Variable _heartbeat Looping call to perform the keepalive by calling IRCClient._sendHeartbeat every heartbeatInterval seconds, or None if there is no heartbeat.
Instance Variable _pings Undocumented
Instance Variable _queue Undocumented
Instance Variable _queueEmptying Undocumented
Instance Variable _registered Whether or not the user is registered. It becomes True once a welcome has been received from the server.

Inherited from LineReceiver:

Method clearLineBuffer Clear buffered data.
Method lineLengthExceeded Called when the maximum line length has been reached. Override if it needs to be dealt with in some special way.
Method rawDataReceived Override this for when raw data is received.
Method setLineMode Sets the line-mode of this receiver.
Method setRawMode Sets the raw mode of this receiver. Further data received will be sent to rawDataReceived rather than lineReceived.
Constant MAX_LENGTH The maximum length of a line to allow (If a sent line is longer than this, the connection is dropped). Default is 16384.
Instance Variable line_mode Undocumented
Instance Variable _buffer Undocumented
Instance Variable _busyReceiving Undocumented

Inherited from Protocol (via LineReceiver):

Method logPrefix Return a prefix matching the class name, to identify log messages related to this protocol instance.
Class Variable factory Undocumented

Inherited from BaseProtocol (via LineReceiver, Protocol):

Method makeConnection Make a connection to a transport and a server.
Instance Variable connected Undocumented
Instance Variable transport Undocumented

Inherited from _PauseableMixin (via LineReceiver, Protocol, BaseProtocol):

Method pauseProducing Undocumented
Method resumeProducing Undocumented
Method stopProducing Undocumented
Instance Variable paused Undocumented
def __getstate__(self): (source)

Undocumented

def action(self, user, channel, data): (source)

Called when I see a user perform an ACTION on a channel.

def alterCollidedNick(self, nickname): (source)

Generate an altered version of a nickname that caused a collision in an effort to create an unused related name for subsequent registration.

Parameters
nickname:strThe nickname a user is attempting to register.
Returns
strA string that is in some way different from the nickname.
def away(self, message=''): (source)

Mark this client as away.

Parameters
message:strIf specified, the away message.
def back(self): (source)

Clear the away status.

def badMessage(self, line, excType, excValue, tb): (source)

When I get a message that's so broken I can't use it.

Parameters
line:bytesThe indecipherable message.
excType:typeThe exception type of the exception raised by the message.
excValue:BaseExceptionThe exception parameter of excType or its associated value(the second argument to raise).
tb:tracebackThe Traceback as a traceback object.
def bounce(self, info): (source)

Called with information about where the client should reconnect.

Parameters
info:strA plaintext description of the address that should be connected to.
def connectionLost(self, reason): (source)

Called when the connection is shut down.

Clear any circular references here, and any external references to this Protocol. The connection has been closed.

Parameters
reason:twisted.python.failure.FailureUndocumented
def connectionMade(self): (source)

Called when a connection is made.

This may be considered the initializer of the protocol, because it is called when the connection is completed. For clients, this is called once the connection to the server has been established; for servers, this is called after an accept() call stops blocking and a socket has been received. If you need to send any greeting or initial message, do it here.

def created(self, when): (source)

Called with creation date information about the server, usually at logon.

Parameters
when:strA string describing when the server was created, probably.
def ctcpMakeQuery(self, user, messages): (source)

Send one or more extended messages as a CTCP query.

Parameters
userUndocumented
messages:a list of extended messages. An extended message is a (tag, data) tuple, where 'data' may be None.Undocumented
def ctcpMakeReply(self, user, messages): (source)

Send one or more extended messages as a CTCP reply.

Parameters
userUndocumented
messages:a list of extended messages. An extended message is a (tag, data) tuple, where 'data' may be None.Undocumented
def ctcpQuery(self, user, channel, messages): (source)

Dispatch method for any CTCP queries received.

Duplicated CTCP queries are ignored and no dispatch is made. Unrecognized CTCP queries invoke IRCClient.ctcpUnknownQuery.

def ctcpQuery_ACTION(self, user, channel, data): (source)

Undocumented

def ctcpQuery_CLIENTINFO(self, user, channel, data): (source)

A master index of what CTCP tags this client knows.

If no arguments are provided, respond with a list of known tags, sorted in alphabetical order. If an argument is provided, provide human-readable help on the usage of that tag.

def ctcpQuery_DCC(self, user, channel, data): (source)

Initiate a Direct Client Connection

Parameters
user:bytesThe hostmask of the user/client.
channel:bytesThe name of the IRC channel.
data:bytesThe DCC request message.
def ctcpQuery_ERRMSG(self, user, channel, data): (source)

Undocumented

def ctcpQuery_FINGER(self, user, channel, data): (source)

Undocumented

def ctcpQuery_PING(self, user, channel, data): (source)

Undocumented

def ctcpQuery_SOURCE(self, user, channel, data): (source)

Undocumented

def ctcpQuery_TIME(self, user, channel, data): (source)

Undocumented

def ctcpQuery_USERINFO(self, user, channel, data): (source)

Undocumented

def ctcpQuery_VERSION(self, user, channel, data): (source)

Undocumented

def ctcpReply(self, user, channel, messages): (source)

Dispatch method for any CTCP replies received.

def ctcpReply_PING(self, user, channel, data): (source)

Undocumented

def ctcpUnknownQuery(self, user, channel, tag, data): (source)

Fallback handler for unrecognized CTCP queries.

No CTCP ERRMSG reply is made to remove a potential denial of service avenue.

def ctcpUnknownReply(self, user, channel, tag, data): (source)

Called when a fitting ctcpReply_ method is not found.

Parameters
user:bytesThe hostmask of the user.
channel:bytesThe name of the IRC channel.
tag:bytesThe CTCP request tag for which no fitting method is found.
data:bytesThe CTCP message.
def dataReceived(self, data): (source)

Protocol.dataReceived. Translates bytes into lines, and calls lineReceived (or rawDataReceived, depending on mode.)

def dcc_ACCEPT(self, user, channel, data): (source)

Undocumented

def dcc_CHAT(self, user, channel, data): (source)

Undocumented

def dcc_RESUME(self, user, channel, data): (source)

Undocumented

def dcc_SEND(self, user, channel, data): (source)

Undocumented

def dccAcceptResume(self, user, fileName, port, resumePos): (source)

Send a DCC ACCEPT response to clients who have requested a resume.

def dccDoAcceptResume(self, user, file, port, resumePos): (source)

Called when a client has verified and accepted a DCC resume request made by us. By default it will do nothing.

Parameters
user:bytesThe hostmask of the user who has accepted the DCC resume request.
file:bytesThe name of the file to resume the transfer of.
port:intAn integer representing the port of the accepting user.
resumePos:intThe position in the file from where the transfer should resume.
def dccDoChat(self, user, channel, address, port, data): (source)

Undocumented

def dccDoResume(self, user, file, port, resumePos): (source)

Called when a client is trying to resume an offered file via DCC send. It should be either replied to with a DCC ACCEPT or ignored (default).

Parameters
user:bytesThe hostmask of the user who wants to resume the transfer of a file previously offered via DCC send.
file:bytesThe name of the file to resume the transfer of.
port:intAn integer representing the port of the requesting user.
resumePos:intThe position in the file from where the transfer should resume.
def dccDoSend(self, user, address, port, fileName, size, data): (source)

Called when I receive a DCC SEND offer from a client.

By default, I do nothing here.

Parameters
user:bytesThe hostmask of the requesting user.
address:bytesThe IP address of the requesting user.
port:intAn integer representing the port of the requesting user.
fileName:bytesThe name of the file to be transferred.
size:intThe size of the file to be transferred, which may be -1 if the size of the file was not specified in the DCC SEND request.
data:listA 3-list of [fileName, address, port].
def dccResume(self, user, fileName, port, resumePos): (source)

Send a DCC RESUME request to another user.

def dccSend(self, user, file): (source)

This is supposed to send a user a file directly. This generally doesn't work on any client, and this method is included only for backwards compatibility and completeness.

Parameters
userstr representing the user
filean open file (unknown, since this is not implemented)
def describe(self, channel, action): (source)

Strike a pose.

Parameters
channel:strThe name of the channel to have an action on. If it has no prefix, it is sent to the user of that name.
action:strThe action to preform.
Present Since
9.0
def getChannelModeParams(self): (source)

Get channel modes that require parameters for correct parsing.

Returns
[str, str][add, remove]
def getUserModeParams(self): (source)

Get user modes that require parameters for correct parsing.

Returns
[str, str][add, remove]
def handleCommand(self, command, prefix, params): (source)

Determine the function to call for the given command and call it with the given arguments.

Parameters
command:bytesThe IRC command to determine the function for.
prefix:bytesThe prefix of the IRC message (as returned by parsemsg).
params:listA list of parameters to call the function with.
def invite(self, user, channel): (source)

Attempt to invite user to channel

Parameters
user:strThe user to invite
channel:strThe channel to invite the user too
Present Since
11.0
def irc_ERR_ERRONEUSNICKNAME(self, prefix, params): (source)

Called when we try to register or change to an illegal nickname.

The server should send this reply when the nickname contains any disallowed characters. The bot will stall, waiting for RPL_WELCOME, if we don't handle this during sign-on.

Note
The method uses the spelling erroneus, as it appears in the RFC, section 6.1.
def irc_ERR_NICKNAMEINUSE(self, prefix, params): (source)

Called when we try to register or change to a nickname that is already taken.

def irc_ERR_PASSWDMISMATCH(self, prefix, params): (source)

Called when the login was incorrect.

def irc_JOIN(self, prefix, params): (source)

Called when a user joins a channel.

def irc_KICK(self, prefix, params): (source)

Called when a user is kicked from a channel.

def irc_MODE(self, user, params): (source)

Parse a server mode change message.

def irc_NICK(self, prefix, params): (source)

Called when a user changes their nickname.

def irc_NOTICE(self, prefix, params): (source)

Called when a user gets a notice.

def irc_PART(self, prefix, params): (source)

Called when a user leaves a channel.

def irc_PING(self, prefix, params): (source)

Called when some has pinged us.

def irc_PRIVMSG(self, prefix, params): (source)

Called when we get a message.

def irc_QUIT(self, prefix, params): (source)

Called when a user has quit.

def irc_RPL_BOUNCE(self, prefix, params): (source)

Undocumented

def irc_RPL_CREATED(self, prefix, params): (source)

Undocumented

def irc_RPL_ENDOFMOTD(self, prefix, params): (source)

RPL_ENDOFMOTD indicates the end of the message of the day messages. Deliver the accumulated lines to receivedMOTD.

def irc_RPL_ISUPPORT(self, prefix, params): (source)

Undocumented

def irc_RPL_LUSERCHANNELS(self, prefix, params): (source)

Undocumented

def irc_RPL_LUSERCLIENT(self, prefix, params): (source)

Undocumented

def irc_RPL_LUSERME(self, prefix, params): (source)

Undocumented

def irc_RPL_LUSEROP(self, prefix, params): (source)

Undocumented

def irc_RPL_MOTD(self, prefix, params): (source)

Undocumented

def irc_RPL_MOTDSTART(self, prefix, params): (source)

Undocumented

def irc_RPL_MYINFO(self, prefix, params): (source)

Undocumented

def irc_RPL_NOTOPIC(self, prefix, params): (source)

Undocumented

def irc_RPL_TOPIC(self, prefix, params): (source)

Called when the topic for a channel is initially reported or when it subsequently changes.

def irc_RPL_WELCOME(self, prefix, params): (source)

Called when we have received the welcome from the server.

def irc_RPL_YOURHOST(self, prefix, params): (source)

Undocumented

def irc_TOPIC(self, prefix, params): (source)

Someone in the channel set the topic.

def irc_unknown(self, prefix, command, params): (source)

Undocumented

def isupport(self, options): (source)

Called with various information about what the server supports.

Parameters
options:list of strDescriptions of features or limits of the server, possibly in the form "NAME=VALUE".
def join(self, channel, key=None): (source)

Join a channel.

Parameters
channel:strThe name of the channel to join. If it has no prefix, '#' will be prepended to it.
key:strIf specified, the key used to join the channel.
def joined(self, channel): (source)

Called when I finish joining a channel.

channel has the starting character ('#', '&', '!', or '+') intact.

def kick(self, channel, user, reason=None): (source)

Attempt to kick a user from a channel.

Parameters
channel:strThe name of the channel to kick the user from. If it has no prefix, '#' will be prepended to it.
user:strThe nick of the user to kick.
reason:strIf given, the reason for kicking the user.
def kickedFrom(self, channel, kicker, message): (source)

Called when I am kicked from a channel.

def leave(self, channel, reason=None): (source)

Leave a channel.

Parameters
channel:strThe name of the channel to leave. If it has no prefix, '#' will be prepended to it.
reason:strIf given, the reason for leaving.
def left(self, channel): (source)

Called when I have left a channel.

channel has the starting character ('#', '&', '!', or '+') intact.

def lineReceived(self, line): (source)

Override this for when each line is received.

Parameters
line:bytesThe line which was received with the delimiter removed.
def luserChannels(self, channels): (source)

Called with the number of channels existent on the server.

Parameters
channels:intUndocumented
def luserClient(self, info): (source)

Called with information about the number of connections, usually at logon.

Parameters
info:strA description of the number of clients and servers connected to the network, probably.
def luserMe(self, info): (source)

Called with information about the server connected to.

Parameters
info:strA plaintext string describing the number of users and servers connected to this server.
def luserOp(self, ops): (source)

Called with the number of ops logged on to the server.

Parameters
ops:intUndocumented
def mode(self, chan, set, modes, limit=None, user=None, mask=None): (source)

Change the modes on a user or channel.

The limit, user, and mask parameters are mutually exclusive.

Parameters
chan:strThe name of the channel to operate on.
set:boolTrue to give the user or channel permissions and False to remove them.
modes:strThe mode flags to set on the user or channel.
limit:intIn conjunction with the 'l' mode flag, limits the number of users on the channel.
user:strThe user to change the mode on.
mask:strIn conjunction with the 'b' mode flag, sets a mask of users to be banned from the channel.
def modeChanged(self, user, channel, set, modes, args): (source)

Called when users or channel's modes are changed.

Parameters
user:strThe user and hostmask which instigated this change.
channel:strThe channel where the modes are changed. If args is empty the channel for which the modes are changing. If the changes are at server level it could be equal to user.
set:bool or intTrue if the mode(s) is being added, False if it is being removed. If some modes are added and others removed at the same time this function will be called twice, the first time with all the added modes, the second with the removed ones. (To change this behaviour override the irc_MODE method)
modes:strThe mode or modes which are being changed.
args:tupleAny additional information required for the mode change.
def msg(self, user, message, length=None): (source)

Send a message to a user or channel.

The message will be split into multiple commands to the server if:

  • The message contains any newline characters
  • Any span between newline characters is longer than the given line-length.
Parameters
user:strUsername or channel name to which to direct the message.
message:strText to send.
length:intMaximum number of octets to send in a single command, including the IRC protocol framing. If None is given then IRCClient._safeMaximumLineLength is used to determine a value.
def myInfo(self, servername, version, umodes, cmodes): (source)

Called with information about the server, usually at logon.

Parameters
servername:strThe hostname of this server.
version:strA description of what software this server runs.
umodes:strAll the available user modes.
cmodes:strAll the available channel modes.
def nickChanged(self, nick): (source)

Called when my nick has been changed.

def notice(self, user, message, length=None): (source)

Send a notice to a user.

Notices are like normal message, but should never get automated replies.

Parameters
user:strThe user to send a notice to.
message:strThe contents of the notice to send.
length:intMaximum number of octets to send in a single command, including the IRC protocol framing. If None is given then IRCClient._safeMaximumLineLength is used to determine a value.
def noticed(self, user, channel, message): (source)

Called when I have a notice from a user to me or a channel.

If the client makes any automated replies, it must not do so in response to a NOTICE message, per the RFC:

    The difference between NOTICE and PRIVMSG is that
    automatic replies MUST NEVER be sent in response to a
    NOTICE message. [...] The object of this rule is to avoid
    loops between clients automatically sending something in
    response to something it received.
def ping(self, user, text=None): (source)

Measure round-trip delay to another IRC client.

def pong(self, user, secs): (source)

Called with the results of a CTCP PING query.

def privmsg(self, user, channel, message): (source)

Called when I have a message from a user to me or a channel.

def quirkyMessage(self, s): (source)

This is called when I receive a message which is peculiar, but not wholly indecipherable.

Parameters
s:bytesThe peculiar message.
def quit(self, message=''): (source)

Disconnect from the server

Parameters
message:strIf specified, the message to give when quitting the server.
def receivedMOTD(self, motd): (source)

I received a message-of-the-day banner from the server.

motd is a list of strings, where each string was sent as a separate message from the server. To display, you might want to use:

    '\n'.join(motd)

to get a nicely formatted string.

def register(self, nickname, hostname='foo', servername='bar'): (source)

Login to the server.

Parameters
nickname:strThe nickname to register.
hostname:strIf specified, the hostname to logon as.
servername:strIf specified, the servername to logon as.
def say(self, channel, message, length=None): (source)

Send a message to a channel

Parameters
channel:strThe channel to say the message on. If it has no prefix, '#' will be prepended to it.
message:strThe message to say.
length:intThe maximum number of octets to send at a time. This has the effect of turning a single call to msg() into multiple commands to the server. This is useful when long messages may be sent that would otherwise cause the server to kick us off or silently truncate the text we are sending. If None is passed, the entire message is always send in one command.
def sendLine(self, line): (source)

Sends a line to the other end of the connection.

Parameters
line:bytesThe line to send, not including the delimiter.
def setNick(self, nickname): (source)

Set this client's nickname.

Parameters
nickname:strThe nickname to change to.
def signedOn(self): (source)

Called after successfully signing on to the server.

def startHeartbeat(self): (source)

Start sending PING messages every IRCClient.heartbeatInterval seconds to keep the connection to the server alive during periods of no activity.

Present Since
11.1
def stopHeartbeat(self): (source)

Stop sending PING messages to keep the connection to the server alive.

Present Since
11.1
def topic(self, channel, topic=None): (source)

Attempt to set the topic of the given channel, or ask what it is.

If topic is None, then I sent a topic query instead of trying to set the topic. The server should respond with a TOPIC message containing the current topic of the given channel.

Parameters
channel:strThe name of the channel to change the topic on. If it has no prefix, '#' will be prepended to it.
topic:strIf specified, what to set the topic to.
def topicUpdated(self, user, channel, newTopic): (source)

In channel, user changed the topic to newTopic.

Also called when first joining a channel.

def userJoined(self, user, channel): (source)

Called when I see another user joining a channel.

def userKicked(self, kickee, channel, kicker, message): (source)

Called when I observe someone else being kicked from a channel.

def userLeft(self, user, channel): (source)

Called when I see another user leaving a channel.

def userQuit(self, user, quitMessage): (source)

Called when I see another user disconnect from the network.

def userRenamed(self, oldname, newname): (source)

A user changed their name from oldname to newname.

def whois(self, nickname, server=None): (source)

Retrieve user information about the given nickname.

Parameters
nickname:strThe nickname about which to retrieve information.
serverUndocumented
Present Since
8.2
def yourHost(self, info): (source)

Called with daemon information about the server, usually at logon.

Parameters
info:strA string describing what software the server is running, probably.
__pychecker__: str = (source)

Undocumented

dcc_destdir: str = (source)

Undocumented

performLogin: int = (source)

Undocumented

dcc_sessions: list = (source)

Undocumented

erroneousNickFallback: str = (source)

Default nickname assigned when an unregistered client triggers an ERR_ERRONEUSNICKNAME while trying to register with an illegal nickname.

fingerReply: Callable or String = (source)

Sent in reply to a FINGER CTCP query. If None, no FINGER reply will be sent.

heartbeatInterval: float = (source)

Interval, in seconds, to send PING messages to the server as a form of keepalive, defaults to 120 seconds. Use None to disable the heartbeat.

hostname: str = (source)

Host name of the IRC server the client is connected to. Initially the host name is None and later is set to the host name from which the RPL_WELCOME message is received.

lineRate: Number of Seconds. = (source)

Minimum delay between lines sent to the server. If None, no delay will be imposed.

Either None or, between receipt of RPL_MOTDSTART and RPL_ENDOFMOTD, a list of str, each of which is the content of an RPL_MOTD message.

nickname = (source)

Nickname the client will use.

password = (source)

Password used to log on to the server. May be None.

realname = (source)

Supplied to the server during login as the "Real name" or "ircname". May be None.

sourceURL: str = (source)

CTCP SOURCE reply, a URL where the source code of this client may be found. If None, no SOURCE reply will be sent.

Available ISUPPORT features on the server

userinfo = (source)

Sent in reply to a USERINFO CTCP query. If None, no USERINFO reply will be sent. "This is used to transmit a string which is settable by the user (and never should be set by the client)."

username = (source)

Supplied to the server during login as the "User name". May be None

versionEnv: str, or None. = (source)

CTCP VERSION reply, environment the client is running in.

versionName: str, or None. = (source)

CTCP VERSION reply, client name. If None, no VERSION reply will be sent.

versionNum: str, or None. = (source)

CTCP VERSION reply, client version.

def _createHeartbeat(self): (source)

Create the heartbeat LoopingCall.

def _reallySendLine(self, line): (source)

Undocumented

def _safeMaximumLineLength(self, command): (source)

Estimate a safe maximum line length for the given command.

This is done by assuming the maximum values for nickname length, realname and hostname combined with the command that needs to be sent and some guessing. A theoretical maximum value is used because it is possible that our nickname, username or hostname changes (on the server side) while the length is still being calculated.

def _sendHeartbeat(self): (source)

Send a PING message to the IRC server as a form of keepalive.

def _sendLine(self): (source)

Undocumented

def _sendMessage(self, msgType, user, message, length=None): (source)

Send a message or notice to a user or channel.

The message will be split into multiple commands to the server if:

  • The message contains any newline characters
  • Any span between newline characters is longer than the given line-length.
Parameters
msgType:strWhether a PRIVMSG or NOTICE should be sent.
user:strUsername or channel name to which to direct the message.
message:strText to send.
length:intMaximum number of octets to send in a single command, including the IRC protocol framing. If None is given then IRCClient._safeMaximumLineLength is used to determine a value.
_MAX_PINGRING: int = (source)

Undocumented

Value
12
_attemptedNick: str = (source)

The nickname that will try to get registered. It may change if it is illegal or already taken. nickname becomes the _attemptedNick that is successfully registered.

Looping call to perform the keepalive by calling IRCClient._sendHeartbeat every heartbeatInterval seconds, or None if there is no heartbeat.

Undocumented

Undocumented

_queueEmptying = (source)

Undocumented

_registered: bool = (source)

Whether or not the user is registered. It becomes True once a welcome has been received from the server.