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):
      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:
      tcp = api.TcpClient(
         '127.0.0.1',  # use your bots host ip
         12345,
         Impl(),
         cafile='path/to/yourcafile.cert'
      )
      await tcp.connect()
      await tcp.read()


loop = asyncio.get_event_loop()
loop.run_until_complete(main())


🚨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"}
  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.0.0.tar.gz (6.3 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.0.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file lotek-rpc-1.0.0.tar.gz.

File metadata

  • Download URL: lotek-rpc-1.0.0.tar.gz
  • Upload date:
  • Size: 6.3 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.0.0.tar.gz
Algorithm Hash digest
SHA256 573d141db4522be4b42e81cfed74d1a084623d2e6edfbc573cd34cca0ee47ece
MD5 88041fb73664649f7007cf891507e123
BLAKE2b-256 e94d710dbf16781c8fc6b32ae7a3107aadc8564ab2e1eac138e943386a44557a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lotek_rpc-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0d9c8830a4fe779682511f0f629f06177fa9785204383f0b6de828cd5949009e
MD5 148d77fcf7c8e662be82503304608510
BLAKE2b-256 eb6c8c5b2b528cf554f1ea3d5baa96c31886644089dc519c06aa5bc647265f88

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