Skip to main content

An intuitive multi-platform bot framework, easily forward messages among platforms, support QQ, WeChat, Telegram. 一个符合直觉的跨社交平台机器人框架,轻松地在平台间传递消息,支持QQ、微信、Telegram

Project description

PepperBot

一个符合直觉的跨社交平台机器人框架,轻松地在平台间传递消息,支持QQ、微信、Telegram

文档 · QQ交流群

生而跨平台

  • QQ 基于 OnebotMirai(待实现)、OPQ(待实现)
  • 微信基于可爱猫
  • Telegram基于Pyrogram
  • 提供了跨平台、易用的消息类型(片段)
  • 通用事件,比如群消息、私聊消息等,提供了统一的接口,只需要写一次代码,就可以无缝应用到各个平台上,跨平台的消息传递从未如此轻松随意
  • 可以跨群、跨平台共享指令(的状态),或者全局锁定用户(不管用户是通过群聊还是私聊)

性能也够用

  • 底层基于异步的 Sanic 框架,目前有一定生态的 python web 框架中,性能最好的
  • 轻量,主要处理消息,对于其他功能,暴露底层接口,方便实现深度定制
  • 几行代码,即可实现多进程负载均衡

自带全家桶

  • 支持 Djangostarlette 风格的集中化路由,或者flaskfastAPI 风格的装饰器式路由
  • 非常灵活的权限系统,支持路由、class、method级别的权限控制
  • Django 类视图风格或Vue 生命周期风格的指令系统
  • 定时任务
  • 日志支持
  • 基于ormar的异步数据库支持(ormar基于sqlalchemy + pydantic)
  • 自带插件市场,可以安装社区指令
  • 提供cli工具,快速创建项目
  • 类似Selenium的事件等待
  • fastAPI风格的依赖注入

接口合语义

  • API 符合直觉,直观,流畅地把想法映射到代码上
  • 基于 python3.6 之后的类型注解,提供了完全的类型提示
  • 大部分可以自动获取的参数,都会自动获取,不需要每次手动提供了
  • 只会动态注入用到的参数,没必要每次写一长串用不到的参数了!
  • 文档中,均有可直接复制使用的代码片段,快速开发

测试文档全

  • 自带linter
    • 通过元编程(AST 之类)手段,对编写的各种代码进行规则检查,并输出易于理解的错误信息,将问题消灭在框架启动之前
  • 文档比较全
  • 测试覆盖比较全面
  • 大量官方示例/指令
  • 来自作者的 QA(加群以获取)

安装

pip install pepperbot

使用

具体使用见文档

示例

六行代码实现消息互转

class WhateverNameYouWant:
    async def group_message(self, bot: UniversalGroupBot, chain: MessageChain):
        if bot.onebot: # 转发qq消息至微信、TG
            await bot.arbitrary.keaimao.group_message("19521241254@chatroom", *chain.segments)
            await bot.arbitrary.telegram.group_message("bot_father", *chain.segments)

        if bot.keaimao: # 转发微信消息至qq、TG
            await bot.arbitrary.onebot.group_message("1041902989", *chain.segments)
            await bot.arbitrary.telegram.group_message("bot_father", *chain.segments)

只需要非常少的代码,就可以实现跨平台的群消息的响应

@register()
class WhateverNameYouWant:

    # 注册跨平台群事件
    async def group_message(self, bot: GroupBot, chain: MessageChain, sender: Sender):
        # chain即为消息链,pure_text是消息中的纯文本,不包含表情、图片等
        if "撤回我" == chain.pure_text:
            await chain.withdraw() # 可以直接“撤回消息”,符合直觉

        if "踢出我" == chain.pure_text:
            await sender.kickout() # 可以直接踢出发言群员

        # 也可以对消息链进行in操作,相当于in chain.pure_text
        if "禁言我" in chain:
            await sender.ban(10) # 可以直接禁言发言群员

        if chain.regex("有人(在|吗|嘛|在吗).?"):
            # 发送一条群消息
            # 接受任意个参数,必须是合法的消息片段,比如Text,Face,Image
            await bot.group_message(
                Text("没人"),
                Image("http://123.jpg"),
            )

生态

插件市场

可以记忆上下文的GPT群聊机器人

pepperbot-ai-query

通过GPT,自动检测群聊中的广告信息

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

pepperbot-0.3.7.tar.gz (98.4 kB view hashes)

Uploaded Source

Built Distribution

pepperbot-0.3.7-py3-none-any.whl (109.9 kB view hashes)

Uploaded Python 3

Supported by

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