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 基于 Onebot
  • 微信基于可爱猫
  • Telegram基于Pyrogram
  • 提供了跨平台、易用的消息类型(片段)
  • 通用事件,比如群消息、私聊消息等,提供了统一的接口,只需要写一次代码,就可以无缝应用到各个平台上,跨平台的消息传递从未如此轻松随意
  • 可以跨群、跨平台共享指令(的状态)

性能也够用

  • 底层基于异步的 Sanic 框架(目前有一定生态的 python web 框架,性能最好的),性能相当不错
  • 轻量,主要处理消息,对于其他功能,暴露底层接口,方便实现深度定制

自带全家桶

  • 支持 Django 风格集中化路由、flask 风格装饰器式路由&权限系统
  • Django 类视图风格/Vue 生命周期风格的指令系统,Fast Api 风格的依赖注入
  • 定时任务
  • 日志支持
  • 数据库连接(内置 sqlite)
  • 链式调用 api(行为链,自动跨平台事件等待)
  • cli,快速创建项目,安装社区指令

接口合语义

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

测试文档全

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

安装

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"),
            )

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.3.tar.gz (75.9 kB view hashes)

Uploaded Source

Built Distribution

pepperbot-0.3.3-py3-none-any.whl (93.5 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