Skip to content
This repository was archived by the owner on Oct 8, 2024. It is now read-only.

MiroslavRosenov/better-ipc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

290 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Better IPC

๐Ÿ“ข Announcement: Repository Archived ๐Ÿ“ข

I am announcing that as of today (08.10.2024) the GitHub repository better-ipc is now archived.

This project has served its purpose, and after careful consideration, Iโ€™ve decided to archive it to preserve the repository in its current state. While it will no longer be actively maintained or accept new contributions, it will remain available for reference and historical purposes.

I want to extend my sincere gratitude to everyone who has provided feedback and supported this project. Your involvement has been invaluable, and I hope that the repository continues to serve as a helpful resource for the community.

Feel free to continue exploring and forking the repository if you find it useful. For any future projects or improvements, stay tuned!

Better IPC

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()

About

High-performance inter-process communication library designed to work with the latest version of discord.py

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages