Websocket based IPC for discord.py bots
Project description
winerp
An IPC based on Websockets. Fast, Stable, and easy-to-use, for inter-communication between your processes or discord.py bots.
Key Features
- Fast with minimum recorded response time being
< 2ms - Lightweight, Stable and Easy to integrate.
- No limitation on number of connected clients.
Installation
Stable:
pip install -U winerp
Main branch (can be unstable/buggy):
pip install git+https://www.github.com/BlackThunder01001/winerp
Working:
This library uses a central server for communication between multiple clients. You can connect a large number of clients for sharing data, and data can be shared between any connected client.
- Import the library:
import winerp
- Initialize winerp client:
ipc_client = winerp.Client(local_name = "my-cool-app", port=8080)
- Start the client:
await ipc_client.start()
# or
asyncio.create_task(ipc_client.start())
- Registering routes:
@ipc_client.route
async def route_name(source, user_name):
return f"Hello {user_name}"
- Requesting data from another client:
user_name = await ipc_client.request(route="fetch_user_name", source="another-cool-bot", user_id = 123)
- Sending information type data to other clients:
data = [1, 2, 3, 4]
await ipc_client.inform(data, destinations=["another-cool-bot"])
Example Usage:
Start the server on terminal using $ winerp --port 8080. You can also start the server using winerp.Server
Client 1 (some-random-bot):
import winerp
import discord
from discord.ext.commands import Bot
bot = Bot(command_prefix="!", intents=discord.Intents.all())
bot.ipc = winerp.Client(local_name = "some-random-bot", port=8080)
@bot.command()
async def request(ctx):
# Fetching data from a client named "another-bot" using route "get_some_data"
data = await bot.ipc.request("get_some_data", source = "another-bot")
await ctx.send(data)
@bot.ipc.route()
async def get_formatted_data(source, user_id = None):
return f"<@{user_id}>"
@bot.ipc.event
async def on_winerp_ready():
print("Winerp Client is ready for connections")
bot.loop.create_task(bot.ipc.start())
bot.run("TOKEN")
Client 2 (another-bot)
import winerp
import discord
from discord.ext.commands import Bot
bot = Bot(command_prefix="?", intents=discord.Intents.all())
bot.ipc = winerp.Client(local_name = "another-bot", port=8080)
@bot.command()
async def format(ctx):
# Fetching data from a client named "some-random-bot" using route "get_formatted_data"
data = await bot.ipc.request("get_formatted_data", source = "some-random-bot", user_id = ctx.author.id)
await ctx.send(data)
@bot.ipc.route()
async def get_some_data(source):
return "You are very cool"
bot.loop.create_task(bot.ipc.start())
bot.run("TOKEN")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file winerp-1.5.0.tar.gz.
File metadata
- Download URL: winerp-1.5.0.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3534995892a3415f9739606cfe63cbc4e69e84d5c79b5fa5876229a2ba6bde83
|
|
| MD5 |
37b34272a19c483a6aa6d57ef1e4aa05
|
|
| BLAKE2b-256 |
8c53c62ab2cbd3d865bbf804a1e53aa1fe2fcdf6614e5f71943131149c92e737
|
File details
Details for the file winerp-1.5.0-py3-none-any.whl.
File metadata
- Download URL: winerp-1.5.0-py3-none-any.whl
- Upload date:
- Size: 16.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae7840dd1a67ce1ccb60e785d28110010557ce544bd296537b12fa785faaeae0
|
|
| MD5 |
310aae1f9bdb939b76ce62ff58bd1a51
|
|
| BLAKE2b-256 |
c9d3ff14e02acae9275b8f1be0a2943f8893450ff5f385bc9b35247dff69c471
|