Skip to main content

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

Support server

Official documentation

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


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)

Uploaded Source

Built Distribution

better_ipc-2.0.3-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

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

Hashes for better-ipc-2.0.3.tar.gz
Algorithm Hash digest
SHA256 000c19f279760e88361d06318b51f970a8bf916a1e45fd35a812570ee317cfc6
MD5 39b1e9b43b5fdb720c5a445367b9e331
BLAKE2b-256 e4c26d7a30eca8036e6bc67aa8fa8bb9fd73fd5a3740e7af5771e5761c979c8b

See more details on using hashes here.

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

Hashes for better_ipc-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 dfb82c2497591d711f05c07b38e0886d6327d678d5e090c33174706c0ff0e5b1
MD5 c178f22a0dbaa6011675a8090575a76c
BLAKE2b-256 71db3bae8f4a2c267af670d935d6df9a7e2664522656b0423d7c4029b5435869

See more details on using hashes here.

Supported by

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