Skip to main content

Easily to code qqoffcial bot.

Project description

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 版本,这些版本存在严重的问题。

腾讯正在调整频道业务,项目正在切离 Aiohttp。

暂无公告

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cocotst-0.1.2.tar.gz (222.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cocotst-0.1.2-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

File details

Details for the file cocotst-0.1.2.tar.gz.

File metadata

  • Download URL: cocotst-0.1.2.tar.gz
  • Upload date:
  • Size: 222.1 kB
  • Tags: Source
  • Uploaded using 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}

File hashes

Hashes for cocotst-0.1.2.tar.gz
Algorithm Hash digest
SHA256 37310b4d6e2c1970a25e1e69dfdd6c6ca22b0702d508a250cd647ad7f9efb28c
MD5 1b810f81423ecca7afb0cc4b7d11a9f7
BLAKE2b-256 94801a2db8dc5d6ed3df8459751785dd84e0af282862a9fa4a767cf7fbaa7a7d

See more details on using hashes here.

File details

Details for the file cocotst-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: cocotst-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 39.9 kB
  • Tags: Python 3
  • Uploaded using 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}

File hashes

Hashes for cocotst-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 79df666f32556871414e7ced98dbda68b8a86e3e136c571861fbc364811fe81a
MD5 b301e4aacb5f4a2f383aa38bc6935142
BLAKE2b-256 82b03c0a6090035c3ad7be847506ee0772f9bbe9005b3ba7a163c8ec1e6ae9be

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page