Skip to main content

Python SDK for Milky Protocol

Project description

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

方式二:异步客户端

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

Project details


Download files

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

Source Distribution

milky_python_sdk-0.3.0.tar.gz (198.8 kB view details)

Uploaded Source

Built Distribution

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

milky_python_sdk-0.3.0-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file milky_python_sdk-0.3.0.tar.gz.

File metadata

  • Download URL: milky_python_sdk-0.3.0.tar.gz
  • Upload date:
  • Size: 198.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for milky_python_sdk-0.3.0.tar.gz
Algorithm Hash digest
SHA256 910a782264bfe8b1992484c6fefeacea768c7bac8ba51f3b6c79d2a95325c59c
MD5 cb3bc62052706ed3b2c6b3c3a8a064cf
BLAKE2b-256 5c07d69332992260e0eccfd3a7e0fdd349c4dabc0c6fc8ddbbe1d7bde27404bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for milky_python_sdk-0.3.0.tar.gz:

Publisher: publish.yml on notnotype/milky-python-sdk

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

File details

Details for the file milky_python_sdk-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for milky_python_sdk-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6f75e21d5f30ed64637aab24e0c74a8aac597db8e4f4cffe248d5dd139a77b96
MD5 a182d2d02dffe57e2a70cdbaf4eba0f4
BLAKE2b-256 dc2f8ad086c2d58625f51c3db4347e0b1af8f9af546005cfde51f526fcedd6f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for milky_python_sdk-0.3.0-py3-none-any.whl:

Publisher: publish.yml on notnotype/milky-python-sdk

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

Supported by

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