Skip to content

Linota/Cocotst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cocotst

Easily to code qqoffcial bot. .

🥥

PyPI Python Version Code style: black Imports: isort License pdm-managed

docs

docs

本项目仅支持 Webhook 事件推送

请自行反向代理 Webhook 服务器并添加 HTTPS

推送地址为 https://your.domain/postevent

请注意, 本项目未对 Webhook 所接收的数据进行校验,后期将会添加签名校验

Cocotst 依赖于 GraiaProject 相信它可以给你带来良好的 Python QQ Bot 开发体验.

安装

pdm add cocotst

poetry add cocotst

pip install cocotst

我们强烈建议使用 pdm / poetry 进行包管理

✨Features

Supports

  • ✅ C2C 消息接收发送
  • ✅ 群 消息接收发送
  • ✅ 媒体消息发送
  • ✅ 机器人加入退出群聊事件
  • ✅ 机器人在群中被开关消息推送事件
  • ✅ 机器人加入移除 C2C 消息列表事件
  • ✅ 机器人在 C2C 中被开关消息推送事件

TODO

以下特性有可能逐渐被添加

  • ⭕ 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 群不定时清除不活跃成员, 请自行重新申请入群.

文档

API 文档 官方文档

如果认为本项目有帮助, 欢迎点一个 Star.

About

Easily to code qqoffcial bot. | 轻松构架 QQ 机器人

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages