本项目仅支持 Webhook 事件推送
请自行反向代理 Webhook 服务器并添加 HTTPS
推送地址为 https://your.domain/postevent
请注意, 本项目未对 Webhook 所接收的数据进行校验,后期将会添加签名校验
Cocotst 依赖于 GraiaProject
相信它可以给你带来良好的 Python QQ Bot
开发体验.
pdm add cocotst
或
poetry add cocotst
或
pip install cocotst
- ✅ C2C 消息接收发送
- ✅ 群 消息接收发送
- ✅ 媒体消息发送
- ✅ 机器人加入退出群聊事件
- ✅ 机器人在群中被开关消息推送事件
- ✅ 机器人加入移除 C2C 消息列表事件
- ✅ 机器人在 C2C 中被开关消息推送事件
以下特性有可能逐渐被添加
- ⭕ Alconna
- ⭕ 频道支持
- ⭕ Markdown 消息支持
- ⭕ 消息撤回
- ⭕ Keyboard 消息支持
- ⭕
ARK, Embed 消息支持
Cocotst
├── docs 文档
├── LICENSE 许可证
├── mkdocs.yml mkdocs 配置文件
├── pdm.lock 依赖锁
├── pyproject.toml 项目配置文件
├── README.md 说明文档
└── src 源码
└── cocotst
├── all.py 方便引用所有模块
├── app.py Tencent API 封装
├── config.py 各类配置文件
├── dispatcher.py
├── event 事件模块
│ ├── builtin.py 内置事件
│ ├── message.py 消息事件
│ ├── receive.py 开关推送事件
│ └── robot.py Bot 位置事件
├── message 消息模块
│ ├── element.py 消息元素
│ ├── parser
│ │ └── base.py 基础消息解析器
├── network 网络模块
│ ├── model.py 数据模型
│ ├── services.py 服务模型
│ ├── sign.py 签名模块
│ └── webhook.py Webhook 模块,负责接收 Tencent 发送的事件。处理后分发给各个事件处理器
├── services.py 服务模块
└── utils.py 工具模块
from cocotst.event.message import GroupMessage
from cocotst.network.model import Target
from cocotst.app import Cocotst
from cocotst.network.model 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.network.model 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 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
.