A high-performance inter-process communication library designed to work with the latest version of discord.py
Project description
Better IPC
High-performance inter-process communication library designed to work with the latest version of discord.py
This library is based on discord-ext-ipc, which is no longer maintained.
Installation
Stable version
For Linux
python3 -m pip install -U better-ipc
For Windows
py -m pip install -U better-ipc
Development version
For Linux
python3 -m pip install -U git+https://github.com/MiroslavRosenov/better-ipc
For Windows
py -m pip install -U git+https://github.com/MiroslavRosenov/better-ipc
Support
Examples
Client example
import discord
from typing import Dict
from discord.ext import commands, ipc
from discord.ext.ipc.server import Server
from discord.ext.ipc.objects import ClientPayload
class MyBot(commands.Bot):
def __init__(self) -> None:
intents = discord.Intents.all()
super().__init__(
command_prefix="$.",
intents=intents,
)
self.ipc = ipc.Server(self, secret_key="🐼")
async def setup_hook(self) -> None:
await self.ipc.start()
@Server.route()
async def get_user_data(self, data: ClientPayload) -> Dict:
user = self.get_user(data.user_id)
return user._to_minimal_user_json()
Cog example
from typing import Dict
from discord.ext import commands, ipc
from discord.ext.ipc.server import Server
from discord.ext.ipc.errors import IPCError
from discord.ext.ipc.objects import ClientPayload
class Routes(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
if not hasattr(bot, "ipc"):
bot.ipc = ipc.Server(self.bot, secret_key="🐼")
async def cog_load(self) -> None:
await self.bot.ipc.start()
async def cog_unload(self) -> None:
await self.bot.ipc.stop()
self.bot.ipc = None
@Server.route()
async def get_user_data(self, data: ClientPayload) -> Dict:
user = self.bot.get_user(data.user_id)
return user._to_minimal_user_json()
async def setup(bot):
await bot.add_cog(Routes(bot))
Inside your web application
from quart import Quart
from discord.ext.ipc import Client
app = Quart(__name__)
ipc = Client(secret_key="🐼")
@app.route('/')
async def main():
resp = await ipc.request("get_user_data", user_id=383946213629624322)
return str(resp.response)
if __name__ == '__main__':
app.run()
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
better-ipc-2.0.3.tar.gz
(20.3 kB
view details)
Built Distribution
File details
Details for the file better-ipc-2.0.3.tar.gz
.
File metadata
- Download URL: better-ipc-2.0.3.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 000c19f279760e88361d06318b51f970a8bf916a1e45fd35a812570ee317cfc6 |
|
MD5 | 39b1e9b43b5fdb720c5a445367b9e331 |
|
BLAKE2b-256 | e4c26d7a30eca8036e6bc67aa8fa8bb9fd73fd5a3740e7af5771e5761c979c8b |
File details
Details for the file better_ipc-2.0.3-py3-none-any.whl
.
File metadata
- Download URL: better_ipc-2.0.3-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dfb82c2497591d711f05c07b38e0886d6327d678d5e090c33174706c0ff0e5b1 |
|
MD5 | c178f22a0dbaa6011675a8090575a76c |
|
BLAKE2b-256 | 71db3bae8f4a2c267af670d935d6df9a7e2664522656b0423d7c4029b5435869 |