Skip to content

Linota/Cocotst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cocotst

Easily to code qqoffcial bot. .

🥥

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

docs

docs

🚨 公告 🚨

请注意:本项目仍在开发中,可能会有重大变更。

切勿使用 0.0.7 0.0.7b1 0.0.8 版本,这些版本存在严重的问题。

暂无公告

本项目仅支持 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 消息支持

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

文档

API 文档 官方文档

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages