🚨 公告 🚨
请注意:本项目仍在开发中,可能会有重大变更。
切勿使用 0.0.7 0.0.7b1 0.0.8 版本,这些版本存在严重的问题。
腾讯正在调整频道业务,项目正在切离 Aiohttp。
暂无公告
本项目仅支持 Webhook 事件推送
请自行反向代理 Webhook 服务器并添加 HTTPS
推送地址为 https://your.domain/postevent
请注意, 本项目未对 Webhook 所接收的数据进行校验,后期将会添加签名校验
Cocotst 依赖于 GraiaProject
相信它可以给你带来良好的 Python QQ Bot 开发体验.
安装
pdm add cocotst
或
poetry add cocotst
或
pip install cocotst
✨Features
Supports
- ✅ C2C 消息接收发送
- ✅ 群 消息接收发送
- ✅ 媒体消息发送
- ✅ 机器人加入退出群聊事件
- ✅ 机器人在群中被开关消息推送事件
- ✅ 机器人加入移除 C2C 消息列表事件
- ✅ 机器人在 C2C 中被开关消息推送事件
- ✅ 撤回消息
TODO
以下特性有可能逐渐被添加
- ⭕ Alconna
- ⭕ Markdown 消息支持
- ⭕ Keyboard 消息支持
- ⭕
ARK, Embed 消息支持
OOPS
- ❌ 停止频道支持
结构目录
Cocotst
├── docs/ # 文档
├── src
│ └── cocotst
│ ├── event
│ │ ├── builtin.py # 内置事件
│ │ ├── message.py # 消息事件
│ │ ├── proactive.py # 主动消息控制事件
│ │ └── robot.py # Bot位置事件
│ ├── config
│ │ ├── webserver.py # WebHook配置
│ │ └── debug.py # 调试配置
│ ├── message
│ │ ├── element.py # 消息元素
│ │ └── parser
│ │ └── base.py # 基础消息解析器
│ ├── network
│ │ ├── model
│ │ │ ├── event_element
│ │ │ │ ├── guild.py # 频道消息元素
│ │ │ │ ├── normal.py # 普通消息元素
│ │ │ │ └── __init__.py # Attachment 消息元素内置
│ │ │ ├── http_api.py # HTTP API 模型
│ │ │ ├── target.py # 目标模型
│ │ │ └── webhook.py # Webhook 模型
│ │ ├── services.py # 服务模型
│ │ ├── sign.py # 签名模块
│ │ ├── webhook.py # Webhook模块
│ │ └── qqapi.py # Tencent API封装
│ ├── utils
│ │ ├── debug
│ │ │ └── __init__.py # 调试工具
│ │ ├── guild.py
│ │ └── __init__.py
│ ├── all.py # 方便引用所有模块
│ ├── app.py # APP模块
│ ├── dispatcher.py # 事件分发器
│ └── services.py # 服务模块
├── tests/ # 测试目录
├── LICENSE # 许可证
├── mkdocs.yml # mkdocs配置文件
├── pdm.lock # 依赖锁
├── pyproject.toml # 项目配置文件
└── README.md # 说明文档
开始使用
from cocotst.event.message import GroupMessage
from cocotst.network.model.target import Target
from cocotst.app import Cocotst
from cocotst.config.webserver import WebHookConfig
from cocotst.message.parser.base import QCommandMatcher
app = Cocotst(
appid="",
clientSecret="",
webhook_config=WebHookConfig(host="0.0.0.0", port=2099),
is_sand_box=True,
)
@app.broadcast.receiver(GroupMessage, decorators=[QCommandMatcher("ping")])
async def catch(app: Cocotst, target: Target):
await app.send_group_message(target, content="pong!")
if __name__ == "__main__":
app.launch_blocking()
模块化的开始使用
安装 graia-saya 模块,来实现模块化的开发
pdm add graia-saya
# main.py
from cocotst.app import Cocotst
from cocotst.config.webserver import WebHookConfig
from creart import it
from graia.saya import Saya
from graia.saya.builtins.broadcast import BroadcastBehaviour
app = Cocotst(
appid="", # 你的 APPID
clientSecret="", # 你的 ClientSecret
webhook_config=WebHookConfig(host="127.0.0.1", port=2099), # 你的 WebHook 配置
is_sand_box=True,
)
# 创建 Saya 实例
saya = it(Saya)
# 安装 BroadcastBehaviour
saya.install_behaviours(BroadcastBehaviour(broadcast=app.broadcast))
# 使用 Saya 的模块上下文管理器加载插件
with saya.module_context():
# 加载插件
saya.require("module.ping")
if __name__ == "__main__":
app.launch_blocking()
# module/ping.py
from cocotst.event.message import GroupMessage
from cocotst.message.parser.base import QCommandMatcher
from cocotst.network.model.target import Target
from cocotst.app import Cocotst
from graia.saya.builtins.broadcast.shortcut import listen, decorate
@listen(GroupMessage)
@decorate(QCommandMatcher("ping"))
async def hello_listener(app: Cocotst, target: Target):
await app.send_group_message(target, content="pong!")
讨论
LinotaOfficia(Bot 开发): 邀请链接
Graia QQ 交流群(有关 Graia 本身及框架本体开发,选择性添加): 邀请链接
QQ 群不定时清除不活跃成员, 请自行重新申请入群.
文档
如果认为本项目有帮助, 欢迎点一个 Star.
Metadata
Release files for Cocotst 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cocotst-0.1.2.tar.gz | 222.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cocotst-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 262.0 kB
Release files / cocotst-0.1.2.tar.gz
| Download URL | cocotst-0.1.2.tar.gz |
|---|---|
| Size | 222.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
37310b4d6e2c1970a25e1e69dfdd6c6ca22b0702d508a250cd647ad7f9efb28c
|
|
BLAKE2b-256 checksum How to use checksums |
94801a2db8dc5d6ed3df8459751785dd84e0af282862a9fa4a767cf7fbaa7a7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / cocotst-0.1.2-py3-none-any.whl
| Download URL | cocotst-0.1.2-py3-none-any.whl |
|---|---|
| Size | 39.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79df666f32556871414e7ced98dbda68b8a86e3e136c571861fbc364811fe81a
|
|
BLAKE2b-256 checksum How to use checksums |
82b03c0a6090035c3ad7be847506ee0772f9bbe9005b3ba7a163c8ec1e6ae9be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|