Skip to main content

IRC client session state parsing library

Project description

ircstates

Build Status

rationale

I wanted a bare-bones reference implementation of taking byte input, parsing it into tokens and then managing an IRC client session state from it.

with this library, you can have client session state managed for you and put additional arbitrary functionality on top of it.

usage

simple

import ircstates

server = ircstates.Server("freenode")
lines  = server.recv(b":server 001 nick :hello world!\r\n")
lines += server.recv(b":nick JOIN #chan\r\n")
for line in lines:
    server.parse_tokens(line)

chan = server.channels["#chan"]

socket to state

import ircstates, irctokens, socket

NICK = "nickname"
CHAN = "#chan"
HOST = "127.0.0.1"
PORT = 6667

server  = ircstates.Server("freenode")
sock    = socket.socket()

sock.connect((HOST, PORT))
def _send(raw: str):
    sock.sendall(f"{raw}\r\n".encode("utf8"))

_send("USER test 0 * test")
_send(f"NICK {NICK}")

while True:
    recv_data  = sock.recv(1024)
    recv_lines = server.recv(recv_data)
    for line in recv_lines:
        server.parse_tokens(line)
        print(f"< {line.format()}")

        # user defined behaviors...
        if line.command == "PING":
            _send(f"PONG :{line.params[0]}")

get a user's channels

>>> server.users
{'nickname': User(nickname='nickname')}
>>> user = server.users["nickname"]
>>> user
User(nickname='nickname')
>>> user.channels
{'#chan'}

get a channel's users

>>> server.channels
{'#chan': Channel(name='#chan')}
>>> channel = server.channels["#chan"]
>>> channel
Channel(name='#chan')
>>> channel.users
{'jess': ChannelUser(#chan jess)}

get a user's modes in channel

>>> channel = server.channels["#chan"]
>>> channel_user = channel.users["nickname"]
>>> channel_user
ChannelUser(#chan jess +ov)
>>> channel_user.modes
{'o', 'v'}

contact

Come say hi at #irctokens on irc.libera.chat

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ircstates-0.13.0.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

ircstates-0.13.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file ircstates-0.13.0.tar.gz.

File metadata

  • Download URL: ircstates-0.13.0.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for ircstates-0.13.0.tar.gz
Algorithm Hash digest
SHA256 d53bf3483b4480f2435475208eb815970941dd59e4473304c553b3ba9b4b3d8b
MD5 dd1346926f5b41016f1885be73ea16f2
BLAKE2b-256 1feb838d1e2548ad9367d4e2d6e62ae01f9d812353ab26520437ec181154b819

See more details on using hashes here.

File details

Details for the file ircstates-0.13.0-py3-none-any.whl.

File metadata

  • Download URL: ircstates-0.13.0-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for ircstates-0.13.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54c8d2a5671f1b572955a0875360a3e5bd45538ab09b60b1444f862cddb5b1be
MD5 1e3144a7e8d00d8972244d66008fdebc
BLAKE2b-256 b76824468c66d80c42663b383467e8243c12b26edd0a482f812bc7f07a650703

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page