# Better IPC
<a href="https://pypi.org/project/better-ipc/" target="_blank"><img src="https://img.shields.io/pypi/v/better-ipc"></a>
<img src="https://img.shields.io/pypi/pyversions/better-ipc">
<img src="https://img.shields.io/github/last-commit/MiroslavRosenov/better-ipc">
<img src="https://img.shields.io/github/license/MiroslavRosenov/better-ipc">
<a href="https://discord.gg/Rpg7zjFYsh" target="_blank"><img src="https://img.shields.io/discord/875005644594372638?label=discord"></a>
## High-performance inter-process communication library designed to work with the latest version of [discord.py](https://github.com/Rapptz/discord.py)
<img src="https://raw.githubusercontent.com/MiroslavRosenov/better-ipc/main/banner.png">
This library is *based* on [discord-ext-ipc](https://github.com/Ext-Creators/discord-ext-ipc), which is no longer maintained.
# Installation
> ### Stable version
#### For Linux
```shell
python3 -m pip install -U better-ipc
```
#### For Windows
```shell
py -m pip install -U better-ipc
```
> ### Development version
#### For Linux
```shell
python3 -m pip install -U git+https://github.com/MiroslavRosenov/better-ipc
```
#### For Windows
```shell
py -m pip install -U git+https://github.com/MiroslavRosenov/better-ipc
```
# Support
[Support server](https://discord.gg/Rpg7zjFYsh)
[Official documentation](https://docs.better-ipc.xyz)
# Examples
### Client example
```python
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
```python
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
```python
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()
```
Raw data
{
"_id": null,
"home_page": "https://github.com/MiroslavRosenov/better-ipc",
"name": "better-ipc",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8.0",
"maintainer_email": "",
"keywords": "better-ipc,ipc,python,discord.py",
"author": "DaPandaOfficial",
"author_email": "miroslav.rosenov39@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/ea/c9/69d07324b06cf036dedf97f6db42de264b014f7a17df1d5d7f2d0e8dada8/better-ipc-2.0.1.tar.gz",
"platform": null,
"description": "# Better IPC\n\n<a href=\"https://pypi.org/project/better-ipc/\" target=\"_blank\"><img src=\"https://img.shields.io/pypi/v/better-ipc\"></a>\n<img src=\"https://img.shields.io/pypi/pyversions/better-ipc\">\n<img src=\"https://img.shields.io/github/last-commit/MiroslavRosenov/better-ipc\">\n<img src=\"https://img.shields.io/github/license/MiroslavRosenov/better-ipc\">\n<a href=\"https://discord.gg/Rpg7zjFYsh\" target=\"_blank\"><img src=\"https://img.shields.io/discord/875005644594372638?label=discord\"></a>\n\n## High-performance inter-process communication library designed to work with the latest version of [discord.py](https://github.com/Rapptz/discord.py)\n\n<img src=\"https://raw.githubusercontent.com/MiroslavRosenov/better-ipc/main/banner.png\">\n\nThis library is *based* on [discord-ext-ipc](https://github.com/Ext-Creators/discord-ext-ipc), which is no longer maintained.\n\n# Installation\n> ### Stable version\n#### For Linux\n```shell\npython3 -m pip install -U better-ipc\n```\n#### For Windows\n```shell\npy -m pip install -U better-ipc\n```\n\n> ### Development version\n#### For Linux\n```shell\npython3 -m pip install -U git+https://github.com/MiroslavRosenov/better-ipc\n```\n#### For Windows\n```shell\npy -m pip install -U git+https://github.com/MiroslavRosenov/better-ipc\n```\n\n\n# Support\n\n[Support server](https://discord.gg/Rpg7zjFYsh)\n\n[Official documentation](https://docs.better-ipc.xyz)\n\n# Examples\n\n### Client example\n```python\nimport discord\nfrom typing import Dict\nfrom discord.ext import commands, ipc\nfrom discord.ext.ipc.server import Server\nfrom discord.ext.ipc.objects import ClientPayload\n\nclass MyBot(commands.Bot):\n def __init__(self) -> None:\n intents = discord.Intents.all()\n\n super().__init__(\n command_prefix=\"$.\",\n intents=intents,\n )\n\n self.ipc = ipc.Server(self, secret_key=\"\ud83d\udc3c\")\n\n async def setup_hook(self) -> None:\n await self.ipc.start()\n\n @Server.route()\n async def get_user_data(self, data: ClientPayload) -> Dict:\n user = self.get_user(data.user_id)\n return user._to_minimal_user_json()\n```\n\n\n### Cog example\n```python\nfrom typing import Dict\nfrom discord.ext import commands, ipc\nfrom discord.ext.ipc.server import Server\nfrom discord.ext.ipc.errors import IPCError\nfrom discord.ext.ipc.objects import ClientPayload\n\nclass Routes(commands.Cog):\n def __init__(self, bot: commands.Bot):\n self.bot = bot\n if not hasattr(bot, \"ipc\"):\n bot.ipc = ipc.Server(self.bot, secret_key=\"\ud83d\udc3c\")\n \n async def cog_load(self) -> None:\n await self.bot.ipc.start()\n\n async def cog_unload(self) -> None:\n await self.bot.ipc.stop()\n self.bot.ipc = None\n\n @Server.route()\n async def get_user_data(self, data: ClientPayload) -> Dict:\n user = self.bot.get_user(data.user_id)\n return user._to_minimal_user_json()\n\nasync def setup(bot):\n await bot.add_cog(Routes(bot))\n```\n\n\n### Inside your web application\n```python\nfrom quart import Quart\nfrom discord.ext.ipc import Client\n\napp = Quart(__name__)\nipc = Client(secret_key=\"\ud83d\udc3c\")\n\n@app.route('/')\nasync def main():\n resp = await ipc.request(\"get_user_data\", user_id=383946213629624322)\n return str(resp.response)\n\nif __name__ == '__main__':\n app.run()\n```\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "A high-performance inter-process communication library designed to work with the latest version of discord.py",
"version": "2.0.1",
"split_keywords": [
"better-ipc",
"ipc",
"python",
"discord.py"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "463c6a450c8b547c7199afccc8fb3791",
"sha256": "419e37dc30d9a8b7989a3fbd79c150c704b36b32345db1ffd5a23b759c867703"
},
"downloads": -1,
"filename": "better_ipc-2.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "463c6a450c8b547c7199afccc8fb3791",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8.0",
"size": 9739,
"upload_time": "2022-12-06T12:05:54",
"upload_time_iso_8601": "2022-12-06T12:05:54.936059Z",
"url": "https://files.pythonhosted.org/packages/7f/c6/4640c4c70e0b1bfeb3af919994f8967cb2570c948022ae96655f3d58b0ef/better_ipc-2.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "fc93a9f259b9bfad941c2c4a9280cdab",
"sha256": "eb7f057c74ac9eae4363da9ef85928805bc1c52c65b024eb445284585c1996e9"
},
"downloads": -1,
"filename": "better-ipc-2.0.1.tar.gz",
"has_sig": false,
"md5_digest": "fc93a9f259b9bfad941c2c4a9280cdab",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8.0",
"size": 8367,
"upload_time": "2022-12-06T12:05:56",
"upload_time_iso_8601": "2022-12-06T12:05:56.794524Z",
"url": "https://files.pythonhosted.org/packages/ea/c9/69d07324b06cf036dedf97f6db42de264b014f7a17df1d5d7f2d0e8dada8/better-ipc-2.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-06 12:05:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "MiroslavRosenov",
"github_project": "better-ipc",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "websockets",
"specs": [
[
">=",
"10.4"
]
]
}
],
"lcname": "better-ipc"
}