Skip to main content

Milky Python SDK

PyPI License English Documentation

Milky SDK 是用于与 Milky 协议端通信的 Python SDK,支持同步/异步两种模式和装饰器风格的事件系统。

安装依赖

pip install milky-python-sdk

快速开始

方式一:MilkyBot 框架(推荐)

from milky import MilkyBot

bot = MilkyBot("http://localhost:3010", "token")

@bot.on_mention()
async def handle(event: MessageEvent):
    await bot.reply(event, "你好!")

@bot.on_command("help")
async def help_cmd(event: MessageEvent, args: str):
    await bot.reply(event, "帮助信息")

bot.startup()

方式二:异步客户端

from milky import AsyncMilkyClient
import asyncio

async def main():
    async with AsyncMilkyClient("http://localhost:3010", "token") as client:
        info = await client.get_login_info()
        print(info.nickname)

asyncio.run(main())

方式三:同步客户端

from milky import MilkyClient

client = MilkyClient("http://localhost:3010", "token")
info = client.get_login_info()

装饰器事件系统

装饰器 说明
@bot.on(EventType.*) 监听指定事件类型
@bot.on_message() 监听所有消息
@bot.on_message("group") 只监听群消息
@bot.on_mention() 只在 bot 被 @ 时触发
@bot.on_command("cmd") 监听 /cmd 命令

消息段

发送文本

from milky.models import OutgoingTextSegment, TextSegmentData

message = [OutgoingTextSegment(data=TextSegmentData(text="Hello!"))]
await client.send_group_message(group_id, message)

发送 @ + 文本

from milky.models import OutgoingMentionSegment, MentionSegmentData, OutgoingTextSegment, TextSegmentData

message = [
    OutgoingMentionSegment(data=MentionSegmentData(user_id=123)),
    OutgoingTextSegment(data=TextSegmentData(text=" 你好"))
]

Bot.reply 快捷方法

@bot.on_mention()
async def handle(event):
    await bot.reply(event, "你好!")  # 自动 @ 发送者
    await bot.reply(event, "消息", at_sender=False)  # 不 @

事件类型

from milky import EventType

EventType.MESSAGE_RECEIVE      # 收到消息
EventType.MESSAGE_RECALL       # 消息撤回
EventType.FRIEND_REQUEST       # 好友请求
EventType.GROUP_MEMBER_INCREASE # 群成员增加
EventType.GROUP_NUDGE          # 群戳一戳

常用 API

# 系统
await client.get_login_info()
await client.get_friend_list()
await client.get_group_list()

# 消息
await client.send_group_message(group_id, message)
await client.send_private_message(user_id, message)
await client.recall_group_message(group_id, message_seq)

# 群管理
await client.set_group_member_mute(group_id, user_id, 60)
await client.kick_group_member(group_id, user_id)

错误处理

from milky.async_client import MilkyError, MilkyHttpError

try:
    await client.send_group_message(group_id, message)
except MilkyHttpError as e:
    print(f"HTTP {e.status_code}: {e.message}")
except MilkyError as e:
    print(f"API [{e.retcode}]: {e.message}")

完整示例

from milky import MilkyBot

bot = MilkyBot("http://localhost:3010", "token")

@bot.on_mention()
async def reply_mention(event):
    await bot.reply(event, "你好!")

@bot.on_command("echo")
async def echo(event, args):
    if args:
        await bot.reply(event, args, at_sender=False)

@bot.on_message("group")
async def log_group(event: MessageEvent):
    data = event.data
    print(f"Group {data.peer_id}: {data.segments}")

bot.startup()

Metadata

Release files for milky-python-sdk 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for milky-python-sdk 0.4.2
File Size Uploaded
milky_python_sdk-0.4.2.tar.gz 72.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for milky-python-sdk 0.4.2
File Interpreter ABI Platform
milky_python_sdk-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 94.0 kB

Release files / milky_python_sdk-0.4.2.tar.gz

Download URL milky_python_sdk-0.4.2.tar.gz
Size 72.1 kB
Tags Source
SHA-256 checksum
How to use checksums
6203cbf63ea34655331841eb9219bea730bb3c217ec9ceea4762dd1fcb25d758
BLAKE2b-256 checksum
How to use checksums
040832992a338ca875085157f40357ab458a9e41844ff5b99c7dcd6183c2de52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 19, 2026.

Transparency log

Release files / milky_python_sdk-0.4.2-py3-none-any.whl

Download URL milky_python_sdk-0.4.2-py3-none-any.whl
Size 21.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fe82b3ee4a9b328865cfbc7425506b86c8bb8af8f84b6d5f4c84de9524fb0cfd
BLAKE2b-256 checksum
How to use checksums
c8e9d8cb9f487ce22b9a5a2e42d87cfb2b1752b06401f505d7ec2a51eaeb6b4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page