Name | pylibob JSON |
Version |
0.1.1
JSON |
| download |
home_page | |
Summary | 另一个 LibOneBot Python 库,旨在帮助开发者实现 OneBot 12 标准。 |
upload_time | 2023-10-05 07:13:31 |
maintainer | |
docs_url | None |
author | |
requires_python | >=3.8 |
license | MIT |
keywords |
onebot
libonebot
onebot12
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# pylibob
另一个 LibOneBot Python 库,旨在帮助开发者实现 [OneBot 12](https://12.onebot.dev/) 标准。
## 这是什么?
这是一个 Python 的 [LibOneBot](https://12.onebot.dev/glossary/#libonebot),旨在帮助开发者快速实现 OneBot 12 标准。
LibOneBot 对 [OneBot Connect](https://12.onebot.dev/connect/) 和动作、事件、消息段进行了包装,便于开发者使用。
下文涉及的 OneBot 概念请参考 [OneBot 术语表](https://12.onebot.dev/glossary/)
## 安装
```shell
pip install pylibob
```
## 快速上手
```python
from __future__ import annotations
# from typing_extensions import Annotated # python<3.9
from typing import Annotated # python>=3.9
from pylibob import (
HTTP,
Bot,
Event,
HTTPWebhook,
OneBotImpl,
WebSocket,
WebSocketReverse,
)
impl = OneBotImpl(
"test", # 实现名称
"1.0.0", # 实现版本
[
HTTP(
host="0.0.0.0", # HTTP 服务器监听 IP
port=8080, # HTTP 服务器监听端口
event_enabled=True, # 是否启用 get_latest_events 元动作
event_buffer_size=20, # 事件缓冲区大小
access_token="access_token", # 访问令牌
),
HTTPWebhook(
url="http://127.0.0.1:8080/onebot/v12/http/", # Webhook 上报地址
),
# WebSocket 均存在 enable_heartbeat 和 heartbeat_interval
WebSocket(
enable_heartbeat=True, # 启用心跳
heartbeat_interval=5000, # 心跳间隔
),
WebSocketReverse(url="ws://127.0.0.1:8081/onebot/v12/ws/"),
],
Bot(platform="qq", user_id="1", online=True), # 任意个数 Bot 实例
)
@impl.action("hello")
async def _(
# 采用类型注解的方式声明参数及类型
a: str,
# 扩展参数使用 Annotated,第一个 metadata 会被视为参数名
b: Annotated[int, "extra.param"],
# 注解为 Bot 的参数不计入动作需要的参数,会内部处理传入 Bot 实例
c: Bot,
# 允许默认值
d: int = 5,
):
# 此动作 `hello` 需要必须参数:
# a (string)
# extra.param (int)
# 可选参数:
# d (int) (default = 5)
# 向应用推送事件
await impl.emit(Event(...))
return a, b, c, d # 返回的内容会传入到响应的 data
# 机器人准备好后(一般指机器人登录完成)
# 实现良好状态默认为 False,准备好需手动调整为 True
# impl.is_good = True
# 还要调用此方法去更新状态
# await impl.update_status()
impl.run() # 运行
```
## 许可证
MIT
Raw data
{
"_id": null,
"home_page": "",
"name": "pylibob",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "onebot libonebot onebot12",
"author": "",
"author_email": "MingxuanGame <MingxuanGame@outlook.com>",
"download_url": "https://files.pythonhosted.org/packages/9e/73/26219d80fd44e17d5b3823a6bf10f2bba2879d6d5baf131d3f172bc96951/pylibob-0.1.1.tar.gz",
"platform": null,
"description": "# pylibob\n\n\u53e6\u4e00\u4e2a LibOneBot Python \u5e93\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u5b9e\u73b0 [OneBot 12](https://12.onebot.dev/) \u6807\u51c6\u3002\n\n## \u8fd9\u662f\u4ec0\u4e48\uff1f\n\n\u8fd9\u662f\u4e00\u4e2a Python \u7684 [LibOneBot](https://12.onebot.dev/glossary/#libonebot)\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u5feb\u901f\u5b9e\u73b0 OneBot 12 \u6807\u51c6\u3002\n\nLibOneBot \u5bf9 [OneBot Connect](https://12.onebot.dev/connect/) \u548c\u52a8\u4f5c\u3001\u4e8b\u4ef6\u3001\u6d88\u606f\u6bb5\u8fdb\u884c\u4e86\u5305\u88c5\uff0c\u4fbf\u4e8e\u5f00\u53d1\u8005\u4f7f\u7528\u3002\n\n\u4e0b\u6587\u6d89\u53ca\u7684 OneBot \u6982\u5ff5\u8bf7\u53c2\u8003 [OneBot \u672f\u8bed\u8868](https://12.onebot.dev/glossary/)\n\n## \u5b89\u88c5\n\n```shell\npip install pylibob\n```\n\n## \u5feb\u901f\u4e0a\u624b\n\n```python\nfrom __future__ import annotations\n\n# from typing_extensions import Annotated # python<3.9\nfrom typing import Annotated # python>=3.9\n\nfrom pylibob import (\n HTTP,\n Bot,\n Event,\n HTTPWebhook,\n OneBotImpl,\n WebSocket,\n WebSocketReverse,\n)\n\nimpl = OneBotImpl(\n \"test\", # \u5b9e\u73b0\u540d\u79f0\n \"1.0.0\", # \u5b9e\u73b0\u7248\u672c\n [\n HTTP(\n host=\"0.0.0.0\", # HTTP \u670d\u52a1\u5668\u76d1\u542c IP\n port=8080, # HTTP \u670d\u52a1\u5668\u76d1\u542c\u7aef\u53e3\n event_enabled=True, # \u662f\u5426\u542f\u7528 get_latest_events \u5143\u52a8\u4f5c\n event_buffer_size=20, # \u4e8b\u4ef6\u7f13\u51b2\u533a\u5927\u5c0f\n access_token=\"access_token\", # \u8bbf\u95ee\u4ee4\u724c\n ),\n HTTPWebhook(\n url=\"http://127.0.0.1:8080/onebot/v12/http/\", # Webhook \u4e0a\u62a5\u5730\u5740\n ),\n # WebSocket \u5747\u5b58\u5728 enable_heartbeat \u548c heartbeat_interval\n WebSocket(\n enable_heartbeat=True, # \u542f\u7528\u5fc3\u8df3\n heartbeat_interval=5000, # \u5fc3\u8df3\u95f4\u9694\n ),\n WebSocketReverse(url=\"ws://127.0.0.1:8081/onebot/v12/ws/\"),\n ],\n Bot(platform=\"qq\", user_id=\"1\", online=True), # \u4efb\u610f\u4e2a\u6570 Bot \u5b9e\u4f8b\n)\n\n\n@impl.action(\"hello\")\nasync def _(\n # \u91c7\u7528\u7c7b\u578b\u6ce8\u89e3\u7684\u65b9\u5f0f\u58f0\u660e\u53c2\u6570\u53ca\u7c7b\u578b\n a: str,\n # \u6269\u5c55\u53c2\u6570\u4f7f\u7528 Annotated\uff0c\u7b2c\u4e00\u4e2a metadata \u4f1a\u88ab\u89c6\u4e3a\u53c2\u6570\u540d\n b: Annotated[int, \"extra.param\"],\n # \u6ce8\u89e3\u4e3a Bot \u7684\u53c2\u6570\u4e0d\u8ba1\u5165\u52a8\u4f5c\u9700\u8981\u7684\u53c2\u6570\uff0c\u4f1a\u5185\u90e8\u5904\u7406\u4f20\u5165 Bot \u5b9e\u4f8b\n c: Bot,\n # \u5141\u8bb8\u9ed8\u8ba4\u503c\n d: int = 5,\n):\n # \u6b64\u52a8\u4f5c `hello` \u9700\u8981\u5fc5\u987b\u53c2\u6570:\n # a (string)\n # extra.param (int)\n # \u53ef\u9009\u53c2\u6570:\n # d (int) (default = 5)\n\n # \u5411\u5e94\u7528\u63a8\u9001\u4e8b\u4ef6\n await impl.emit(Event(...))\n\n return a, b, c, d # \u8fd4\u56de\u7684\u5185\u5bb9\u4f1a\u4f20\u5165\u5230\u54cd\u5e94\u7684 data\n\n# \u673a\u5668\u4eba\u51c6\u5907\u597d\u540e\uff08\u4e00\u822c\u6307\u673a\u5668\u4eba\u767b\u5f55\u5b8c\u6210\uff09\n# \u5b9e\u73b0\u826f\u597d\u72b6\u6001\u9ed8\u8ba4\u4e3a False\uff0c\u51c6\u5907\u597d\u9700\u624b\u52a8\u8c03\u6574\u4e3a True\n# impl.is_good = True\n# \u8fd8\u8981\u8c03\u7528\u6b64\u65b9\u6cd5\u53bb\u66f4\u65b0\u72b6\u6001\n# await impl.update_status()\n\nimpl.run() # \u8fd0\u884c\n```\n\n## \u8bb8\u53ef\u8bc1\n\nMIT\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "\u53e6\u4e00\u4e2a LibOneBot Python \u5e93\uff0c\u65e8\u5728\u5e2e\u52a9\u5f00\u53d1\u8005\u5b9e\u73b0 OneBot 12 \u6807\u51c6\u3002",
"version": "0.1.1",
"project_urls": {
"Bug tracker": "https://github.com/Herta-villa/pylibob/issues",
"Documentation": "https://pylibob.mxgame.top",
"Homepage": "https://pylibob.mxgame.top",
"Repository": "https://github.com/Herta-villa/pylibob"
},
"split_keywords": [
"onebot",
"libonebot",
"onebot12"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "26809970922debdce5beef6481657864c2762d58c03ae7bcc4ad42ec16c85c7f",
"md5": "2a23bbc34e55cba2a9ecda7aefeb38a1",
"sha256": "e2113c3087fa4074af105b834bc9e639bd3c931b9dbe4086c9739c9c823fde2b"
},
"downloads": -1,
"filename": "pylibob-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "2a23bbc34e55cba2a9ecda7aefeb38a1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 28498,
"upload_time": "2023-10-05T07:13:29",
"upload_time_iso_8601": "2023-10-05T07:13:29.946598Z",
"url": "https://files.pythonhosted.org/packages/26/80/9970922debdce5beef6481657864c2762d58c03ae7bcc4ad42ec16c85c7f/pylibob-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9e7326219d80fd44e17d5b3823a6bf10f2bba2879d6d5baf131d3f172bc96951",
"md5": "d7edec5b3721cc3df84a68de2de28f53",
"sha256": "5695ed256f3a89356adc9dc6fc4cab63f8506bb9151008a1a302f196fae04fd9"
},
"downloads": -1,
"filename": "pylibob-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "d7edec5b3721cc3df84a68de2de28f53",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 22379,
"upload_time": "2023-10-05T07:13:31",
"upload_time_iso_8601": "2023-10-05T07:13:31.617758Z",
"url": "https://files.pythonhosted.org/packages/9e/73/26219d80fd44e17d5b3823a6bf10f2bba2879d6d5baf131d3f172bc96951/pylibob-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-05 07:13:31",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Herta-villa",
"github_project": "pylibob",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "pylibob"
}