Welcome to irctk’s documentation!

Contents:

Client

class irctk.client.Client(nickname: str = 'irctk', ident: str = 'irctk', realname: str = 'irctk', password: str = None)
>>> client = Client(nickname='example')
channel_class

alias of irctk.channel.Channel

connect(host: str, port: int, use_tls: bool = False, loop=None)

Connect to the IRC server

irc_equal(lhs: str, rhs: str) → bool

Determine if two strings are IRC equal.

quit(message: str = 'Disconnected')

Disconnects from IRC and closes the connection. Accepts an optional reason.

send(message_or_command, *parameters, colon: bool = False)

Send an IRC message

>>> client.send('JOIN', '#example')
send_join(channel, key: str = None)

Sends a JOIN channel command.

>>> client.send_join('#palaver')
send_line(line: str)

Sends a raw line to IRC

Example:

>>> client.send_line('PRIVMSG kylef :Hey!')
send_part(channel)

Sends a PART channel command.

>>> client.send_part('#palaver')
send_privmsg(target, message: str)

Sends a private message to a target.

Example:

>>> client.send_privmsg('kyle', 'Hi')
>>> client.send_privmsg(channel, 'Hi')

Message

class irctk.message.Message(tags: List[irctk.message.MessageTag] = None, prefix: str = None, command: str = '', parameters: List[str] = None)
get(index: int) → Optional[str]

Returns a parameter at index or None

>>> message = Message.parse('JOIN #example')
>>> message.get(0)
'#example'
>>> message.get(1)
classmethod parse(string: str)

Parse an IRC line into a Message instance

>>> message = Message.parse(':doe!doe@example.com PRIVMSG #example :Hello World')
>>> message.prefix
'doe!doe@example.com'
>>> message.command
'PRIVMSG'
>>> message.parameters
['#example', 'Hello World']
class irctk.message.MessageTag(vendor: str = None, name: str = None, value: str = None)

Nick

class irctk.nick.Nick(nick: str = '', ident: Optional[str] = '', host: Optional[str] = '')

Channel

class irctk.channel.Channel(name: str)

Represents a channel

class irctk.channel.Membership(nick: irctk.nick.Nick, modes: List[str] = None)

Represents a nick membership inside a channnel.

has_mode(perm: str) → bool

Checks if the membership contains a user mode

>>> membership.has_mode('o')

Support

class irctk.isupport.ISupport
case_mapping

Returns the case mapping.

Example:

>>> support.case_mapping
'rfc1459'
channel_prefixes

Returns a list of channel prefixes.

Example:

>>> support.channel_prefixes
['#', '&']
is_channel(channel_name) → bool

Returns True if supplied channel name is a valid channel name.

Example:

>>> support.is_channel('#darkscience')
True

>>> support.is_channel('kylef')
False
maximum_channel_length

Returns the maximum length of a channel name.

Example:

>>> support.maximum_channel_length
200
maximum_nick_length

Returns the maximum length of a nickname.

Example:

>>> support.maximum_nick_length
9

Numerics

RFC1459

Error Replies

irctk.numerics.ERR_NOSUCHNICK = 401
irctk.numerics.ERR_NOSUCHSERVER = 402
irctk.numerics.ERR_NOSUCHCHANNEL = 403
irctk.numerics.ERR_CANNOTSENDTOCHAN = 404
irctk.numerics.ERR_TOOMANYCHANNELS = 405
irctk.numerics.ERR_WASNOSUCHNICK = 406
irctk.numerics.ERR_TOOMANYTARGETS = 407
irctk.numerics.ERR_NOORIGIN = 409
irctk.numerics.ERR_NORECIPIENT = 411
irctk.numerics.ERR_NOTEXTTOSEND = 412
irctk.numerics.ERR_NOTOPLEVEL = 413
irctk.numerics.ERR_WILDTOPLEVEL = 414
irctk.numerics.ERR_UNKNOWNCOMMAND = 421
irctk.numerics.ERR_NOMOTD = 422
irctk.numerics.ERR_NOADMININFO = 423
irctk.numerics.ERR_FILEERROR = 424
irctk.numerics.ERR_NONICKNAMEGIVEN = 431
irctk.numerics.ERR_ERRONEUSNICKNAME = 432
irctk.numerics.ERR_NICKNAMEINUSE = 433
irctk.numerics.ERR_NICKCOLLISION = 436
irctk.numerics.ERR_USERNOTINCHANNEL = 441
irctk.numerics.ERR_NOTONCHANNEL = 442
irctk.numerics.ERR_USERONCHANNEL = 443
irctk.numerics.ERR_NOLOGIN = 444
irctk.numerics.ERR_SUMMONDISABLED = 445
irctk.numerics.ERR_USERSDISABLED = 446
irctk.numerics.ERR_NOTREGISTERED = 451
irctk.numerics.ERR_NEEDMOREPARAMS = 461
irctk.numerics.ERR_ALREADYREGISTRED = 462
irctk.numerics.ERR_NOPERMFORHOST = 463
irctk.numerics.ERR_PASSWDMISMATCH = 464
irctk.numerics.ERR_YOUREBANNEDCREEP = 465
irctk.numerics.ERR_KEYSET = 467
irctk.numerics.ERR_CHANNELISFULL = 471
irctk.numerics.ERR_UNKNOWNMODE = 472
irctk.numerics.ERR_INVITEONLYCHAN = 473
irctk.numerics.ERR_BANNEDFROMCHAN = 474
irctk.numerics.ERR_BADCHANNELKEY = 475
irctk.numerics.ERR_NOPRIVILEGES = 481
irctk.numerics.ERR_CHANOPRIVSNEEDED = 482
irctk.numerics.ERR_CANTKILLSERVER = 483
irctk.numerics.ERR_NOOPERHOST = 491
irctk.numerics.ERR_UMODEUNKNOWNFLAG = 501
irctk.numerics.ERR_USERSDONTMATCH = 502

Command Responses

irctk.numerics.RPL_NONE = 300
irctk.numerics.RPL_USERHOST = 302
irctk.numerics.RPL_ISON = 303
irctk.numerics.RPL_AWAY = 301
irctk.numerics.RPL_UNAWAY = 305
irctk.numerics.RPL_NOWAWAY = 306
irctk.numerics.RPL_WHOISUSER = 311
irctk.numerics.RPL_WHOISSERVER = 312
irctk.numerics.RPL_WHOISOPERATOR = 313
irctk.numerics.RPL_WHOISIDLE = 317
irctk.numerics.RPL_ENDOFWHOIS = 318
irctk.numerics.RPL_WHOISCHANNELS = 319
irctk.numerics.RPL_WHOWASUSER = 314
irctk.numerics.RPL_ENDOFWHOWAS = 369
irctk.numerics.RPL_LISTSTART = 321
irctk.numerics.RPL_LIST = 322
irctk.numerics.RPL_LISTEND = 323
irctk.numerics.RPL_CHANNELMODEIS = 324
irctk.numerics.RPL_NOTOPIC = 331
irctk.numerics.RPL_TOPIC = 332
irctk.numerics.RPL_INVITING = 341
irctk.numerics.RPL_SUMMONING = 342
irctk.numerics.RPL_VERSION = 351
irctk.numerics.RPL_WHOREPLY = 352
irctk.numerics.RPL_ENDOFWHO = 315
irctk.numerics.RPL_NAMREPLY = 353
irctk.numerics.RPL_ENDOFNAMES = 366
irctk.numerics.RPL_BANLIST = 367
irctk.numerics.RPL_ENDOFBANLIST = 368
irctk.numerics.RPL_INFO = 371
irctk.numerics.RPL_ENDOFINFO = 374
irctk.numerics.RPL_MOTDSTART = 375
irctk.numerics.RPL_MOTD = 372
irctk.numerics.RPL_ENDOFMOTD = 376
irctk.numerics.RPL_YOUREOPER = 381
irctk.numerics.RPL_REHASHING = 382
irctk.numerics.RPL_TIME = 391
irctk.numerics.RPL_USERSSTART = 392
irctk.numerics.RPL_USERS = 393
irctk.numerics.RPL_ENDOFUSERS = 394
irctk.numerics.RPL_NOUSERS = 395
irctk.numerics.RPL_TRACECONNECTING = 201
irctk.numerics.RPL_TRACEHANDSHAKE = 202
irctk.numerics.RPL_TRACEUNKNOWN = 203
irctk.numerics.RPL_TRACEOPERATOR = 204
irctk.numerics.RPL_TRACEUSER = 205
irctk.numerics.RPL_TRACESERVER = 206
irctk.numerics.RPL_TRACENEWTYPE = 208
irctk.numerics.RPL_TRACELOG = 261
irctk.numerics.RPL_STATSLINKINFO = 211
irctk.numerics.RPL_STATSCOMMANDS = 212
irctk.numerics.RPL_STATSCLINE = 213
irctk.numerics.RPL_STATSNLINE = 214
irctk.numerics.RPL_STATSILINE = 215
irctk.numerics.RPL_STATSKLINE = 216
irctk.numerics.RPL_STATSYLINE = 218
irctk.numerics.RPL_ENDOFSTATS = 219
irctk.numerics.RPL_STATSLLINE = 241
irctk.numerics.RPL_STATSUPTIME = 242
irctk.numerics.RPL_STATSOLINE = 243
irctk.numerics.RPL_STATSHLINE = 244
irctk.numerics.RPL_UMODEIS = 221
irctk.numerics.RPL_LUSERCLIENT = 251
irctk.numerics.RPL_LUSEROP = 252
irctk.numerics.RPL_LUSERUNKNOWN = 253
irctk.numerics.RPL_LUSERCHANNELS = 254
irctk.numerics.RPL_LUSERME = 255
irctk.numerics.RPL_ADMINME = 256
irctk.numerics.RPL_ADMINLOC1 = 257
irctk.numerics.RPL_ADMINLOC2 = 258
irctk.numerics.RPL_ADMINEMAIL = 259

Indices and tables