大别野「黑塔」Python SDK
大别野聊天室于 2024 年 3 月 12 日正式停止服务,Herta-villa-SDK 停止更新。
详情请见 【公告】大别野聊天室下线说明
aiohttp
和 fastapi
后端),完整异步支持pip install herta-villa-sdk
FastAPI 后端支持:
pip install herta-villa-sdk[fastapi]
WebSocket 支持:
pip install herta-villa-sdk[ws]
你需要拥有一个大别野机器人。可前往大别野「机器人开发者社区」(OpenVilla
)申请。
from hertavilla import MessageChain, SendMessageEvent, VillaBot, run, StartswithResult
from hertavilla.server import init_backend
PUB_KEY = """-----BEGIN PUBLIC KEY-----
aaa
bbb
ccc
-----END PUBLIC KEY-----
""" # 开放平台 pub_key
# 需要注意 `-----BEGIN PUBLIC KEY-----` 前没有换行符
# `-----END PUBLIC KEY-----` 后有一个换行符
# 目前从网页端复制下来的时候会为一串 pub_key,需要将空格转为换行
bot = VillaBot(
"bot_id", # 这里填写 bot_id
"bot_secret", # 这里填写 secret
PUB_KEY, # 开放平台提供的 pub_key
callback_endpoint="/", # bot 回调 endpoint
# use_websocket=True, # 使用 WebSocket
# test_villa_id=0, # 测试别野,上线后可填 0
)
@bot.startswith("/") # 注册一个消息匹配器,匹配前缀为 / 的消息
async def _(event: SendMessageEvent, bot: VillaBot, match_result: StartswithResult):
if match_result.text == "hello":
chain = MessageChain("world")
await bot.send(event.villa_id, event.room_id, chain)
init_backend() # 初始化后端
run(bot) # 运行 bot
可以向你的 bot 发送 @Bot /hello
,bot 会回复 world
。
详见 examples 文件夹。
需在开放平台的「回调方式」中选择 「websocket回调」。
在实例化 VillaBot
时传入参数:
use_websocket
(bool) 启用 WebSockettest_villa_id
(int) 测试别野,上线后可填 0启动时会自动登录并接收事件。
调用 VillaBot.logout
方法。
在不需要 HTTP WebHook 时,Herta SDK 提供了 LoopBackend
。
此后端仅依靠异步 loop
运行。
同时增加了监视 WS 连接(所有连接断开[^1]时会自动关闭应用)
[^1]:机器人主动 Logout 或者被服务器踢下线
auto_shutdown
(bool) 启用自动关闭watch_interval
(int) 监视间隔/checkMemberBotAccessToken
/getVilla
/getMember
/getVillaMembers
/deleteVillaMember
/pinMessage
/recallMessage
/sendMessage
/createGroup
/editGroup
/deleteGroup
/getGroupList
/editRoom
/deleteRoom
/getRoom
/getVillaGroupRoomList
/operateMemberToRole
/createMemberRole
/editMemberRole
/deleteMemberRole
/getMemberRoleInfo
/getVillaMemberRoles
/getAllEmoticons
/transferImage
/getUploadImageParams
/audit
/getWebsocketInfo
大别野 Bot 和 Herta SDK 均处于开发状态中,如遇到问题或有相关建议可通过 Issue 提出,感谢支持!
有关提出 Issue 和 Pull Request 的要点,请查看 贡献指南。
aaUeZqd
)