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 heavily 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
You can join the support server here
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():
return await ipc.request("get_user_data", user_id=383946213629624322)
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-1.1.4.tar.gz
(12.5 kB
view hashes)
Built Distribution
better_ipc-1.1.4-py3-none-any.whl
(14.2 kB
view hashes)
Close
Hashes for better_ipc-1.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a204b06ec759138ad56245280b380a0fe22c86ebd0a7342fd96660a910d378b5 |
|
MD5 | 653edf9028c3c19c46913e94f6d086bb |
|
BLAKE2b-256 | 3c96eb2eb0ccc117ad08492a2c7e173fd49793fbee6fe33e6f7f575f8fb52233 |