Skip to main content

Simple TCP client impl to interact with the irc bot and build remote plugins.

Project description

RPC Module

Installing from PyPi

pip3 install lotek-rpc

Example implementation

import asyncio
import lotek_rpc.api as api


class Impl(api.IrcImpl):
    async def on_message(self, target, by, message, bot_nick):
        print(target, by, message)
        # do some shit like
        if message == 'hack_a_gibson':
            await self.rpc.send_message(target, 'hacking gibson from RPC')
        elif message.startswith('dieplz'):
            await self.rpc.disconnect()
            exit(1)


async def main():
    # endless loop to always try and connect
    while True:
        try:
            tcp = api.TcpClient(
                '127.0.0.1',  # use your bots host ip
                12345,
                Impl(),
                cafile='path/to/yourcafile.cert' # optional. remove this line if using hosted bot
            )
            await tcp.connect()
            await tcp.read()
        except (asyncio.TimeoutError, ConnectionError) as e:
            print(f"Connection error occurred: {e}")
            await asyncio.sleep(5)
        except Exception as e:
            print(f"Unexpected error: {e}")
            await asyncio.sleep(5)


loop = asyncio.get_event_loop()

try:
    loop.run_until_complete(main())
except KeyboardInterrupt:
    print("Bot terminated by user.")


🚨Important info before starting to implement your own client not using this library🚨

Messages are terminated by a nullbyte 0x00. This means at the end of any message you send, add 0x00 byte. Any message you receive from the server will be ended with 0x00

Info for those who want to implement their own client

Supported Messages you can send from the client

  1. Sending a message to a channel or user
    • CLIENT_CMD:SEND_MESSAGE:{"target": "#channel/user", "message": "hello world:"}
  2. Telling the server you are disconnecting
    • CLIENT_END:

Supported Message you can receive from the server

  1. On message in a channel or from user
    • SERVER_EVENT:ON_MESSAGE:{"target": "#channel/user", "by": "user_who_sent_msg", "message": "hello world", "bot_nick": "MyBot"}
  2. On RPC Server restarting
    • SERVER_EVENT:RESTARTING


Building wheel + src

# https://packaging.python.org/tutorials/packaging-projects/
python3.9 -m pip install --upgrade build
python3.9 -m build
python3.9 -m twine upload --repository testpypi dist/*

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

lotek_rpc-1.1.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lotek_rpc-1.1.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file lotek_rpc-1.1.0.tar.gz.

File metadata

  • Download URL: lotek_rpc-1.1.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/8.5.0 pkginfo/1.12.0 requests/2.30.0 requests-toolbelt/1.0.0 tqdm/4.67.1 CPython/3.9.20

File hashes

Hashes for lotek_rpc-1.1.0.tar.gz
Algorithm Hash digest
SHA256 59793dd672fd0fc88b352b3b28672369f9099af3a0f584cc82415350dd1ea5cd
MD5 68284b7f7ff9633c13133ae4dc177783
BLAKE2b-256 406e43197c1da580525615bc235d5c8e57aef12bbefa77e8a5b85fb5a9116b7a

See more details on using hashes here.

File details

Details for the file lotek_rpc-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: lotek_rpc-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/8.5.0 pkginfo/1.12.0 requests/2.30.0 requests-toolbelt/1.0.0 tqdm/4.67.1 CPython/3.9.20

File hashes

Hashes for lotek_rpc-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7194661449121f22c90f6302d6fd0387c6b6133ec276bb82a135193b8e513da
MD5 d72aeb0d1a0b85f65109abfa19ca5cad
BLAKE2b-256 42cf617b990709d64f507585cab7c144c9290ce2e8934b8d1071e943c6d94834

See more details on using hashes here.

Supported by

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