Skip to main content

ErisPulse OneBot12 适配器

基于 ErisPulse 框架的 OneBot V12 基线协议适配器,支持多账号、Server/Client 双模式运行。

安装

epsdk install OneBot12Adapter

配置

config/config.toml 中添加:

[OneBotv12_Adapter.accounts.main]
bot_id = "机器人ID"
mode = "server"
server_path = "/onebot12"
server_token = ""
enabled = true

# Client 模式示例
[OneBotv12_Adapter.accounts.backup]
bot_id = "另一个机器人ID"
mode = "client"
client_url = "ws://127.0.0.1:3002"
client_token = ""
enabled = true

配置字段

字段 类型 必填 说明
bot_id string 机器人ID,用于SDK路由
mode string 运行模式:server(被动)或 client(主动),默认 server
server_path string Server 模式 WS 路径,默认 /onebot12
server_token string Server 模式认证 Token
client_url string Client 模式 WS 地址,默认 ws://127.0.0.1:3001
client_token string Client 模式认证 Token
enabled bool 是否启用(默认 true)
platform string 平台标识,默认 onebot12
implementation string 实现标识(如 go-cqhttp

快速开始

from ErisPulse import sdk
from ErisPulse.Core.Event import command, message

@command("hello")
async def hello_handler(event):
    await event.reply("Hello from OneBot12!")

async def main():
    await sdk.run(keep_running=True)

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

消息发送

onebot12 = sdk.adapter.get("onebot12")

# 文本消息
await onebot12.Send.To("user", "123456").Text("Hello!")
await onebot12.Send.To("group", "789012").Text("群消息")

# 媒体消息
await onebot12.Send.To("user", "123456").Image("file_id_or_url")
await onebot12.Send.To("user", "123456").Video("file_id_or_url")
await onebot12.Send.To("user", "123456").Audio("file_id_or_url")

# 发送 bytes
with open("image.png", "rb") as f:
    await onebot12.Send.To("user", "123456").Image(f.read())

# 位置
await onebot12.Send.To("group", "789012").Location(39.9042, 116.4074, title="北京")

链式修饰

# @用户
await onebot12.Send.To("group", "789012").At("123456").Text("你好!")

# @全体
await onebot12.Send.To("group", "789012").AtAll().Text("通知!")

# 回复消息
await onebot12.Send.To("group", "789012").Reply("msg_id").Text("回复内容")

# 组合使用
await onebot12.Send.To("group", "789012").Reply("msg_id").At("123456").Text("回复并@")

指定账户发送

# 使用 Using 指定账户
await onebot12.Send.Using("backup").To("user", "123456").Text("来自备用账户")

消息操作

# 撤回
await onebot12.Send.To("group", "789012").Recall("message_id")

# 编辑
await onebot12.Send.To("group", "789012").Edit("message_id", "新内容")

# 原始 OB12 消息段
await onebot12.Send.To("group", "789012").Raw_ob12([
    {"type": "text", "data": {"text": "你好"}},
    {"type": "image", "data": {"file_id": "xxx"}}
])

运行模式

Server 模式(默认)

启动 WS 服务器等待 OneBot12 实现端连接。适用于多客户端连接同一服务端的场景。

Client 模式

主动连接 OneBot12 实现端。支持自动重连(间隔 30 秒)。

事件处理

OneBot12 适配器直接 pass-through 标准格式事件,无需转换。使用 ErisPulse 标准事件处理器:

from ErisPulse.Core.Event import message, notice, request, meta

@message.on_message()
async def handle_message(event):
    text = event.get_text()
    user_id = event.get_user_id()
    group_id = event.get_group_id()
    await event.reply(f"收到: {text}")

@notice.on_group_increase()
async def handle_member_increase(event):
    group_id = event.get_group_id()
    user_id = event.get_user_id()
    await event.reply(f"欢迎 {user_id} 加入群!")

@request.on_friend_request()
async def handle_friend_request(event):
    user_id = event.get_user_id()
    comment = event.get_comment()

事件扩展字段

所有事件自动添加 onebot12_raw_type 字段保留原始事件类型。

API 调用

# 直接 API 调用
resp = await onebot12.call_api(
    "get_user_info",
    _account_id="main",
    user_id="123456"
)

# 获取自身信息
info = await onebot12.call_api("get_self_info", _account_id="main")

响应格式

# 成功
{"status": "ok", "retcode": 0, "data": {...}, "message_id": "xxx", "message": ""}

# 失败
{"status": "failed", "retcode": 10003, "data": None, "message_id": "", "message": "错误描述"}

参考链接

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

erispulse_onebot12adapter-4.0.1.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

erispulse_onebot12adapter-4.0.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file erispulse_onebot12adapter-4.0.1.tar.gz.

File metadata

File hashes

Hashes for erispulse_onebot12adapter-4.0.1.tar.gz
Algorithm Hash digest
SHA256 bd254fc78da5540cd237c6887fe795d13ce44f46aef6bfab21852a219ba04b46
MD5 e17b8e418cf90819bf80da7a70f99a1f
BLAKE2b-256 95b0f5ac9fc285342fbdc4bb653b14c8ae1b98d04a203c9cd9ed8fb843e03d2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for erispulse_onebot12adapter-4.0.1.tar.gz:

Publisher: python-publish.yml on ErisPulse/ErisPulse-OneBot12Adapter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file erispulse_onebot12adapter-4.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for erispulse_onebot12adapter-4.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3980f3b76a24920d221c64617637c6d6e6845ccc6eff45e6d39e02ae55794365
MD5 851b0129fd577d87f7f1274e25f910a2
BLAKE2b-256 46a6b4e971f38fc0b0fd53b3b4e7afc4ccecd86d44ec86dc483583de9d6ada8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for erispulse_onebot12adapter-4.0.1-py3-none-any.whl:

Publisher: python-publish.yml on ErisPulse/ErisPulse-OneBot12Adapter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

4.0.1 This release

2 files

1.2.0

2 files

1.1.3

2 files

1.1.2

2 files

1.1.0

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page