Skip to content

关于 NoneBot 未来发展的思考 #53

@stdrc

Description

@stdrc

NoneBot 在有限的推广的情况下,被这么多人使用,让我感到很意外。它甚至到现在文档还没有完全写完🙄 。

经过半年多的发展,NoneBot 已经基本可用,虽然还是会有一些小问题,但这不妨碍已经有很多投入使用的应用在使用它。

实际上 NoneBot 还有很多不足,比如:

  • 基于 python-aiocqhttp(跟 酷Q 强耦合),无法支持其它机器人平台
  • 过于以「命令」为核心,而忽略了大量其它类型的消息处理需求(虽然可以通过 python-aiocqhttp 的 on_message 装饰器来做到);实际上 NoneBot 的前身,小开机器人,的「过滤器」特性还是比较有用的,可以用来进行消息预处理(比如日志、语音转文本)和拦截(比如屏蔽特定消息类型),但在写 NoneBot 的时候砍掉了 (1.6.0 message_preprocessor)
  • 没有全局黑名单机制,无法简单地屏蔽其它 bot 的消息(实际上这个功能只要有「过滤器」功能就可以轻松实现)
  • 注册命令的选项不够灵活,比如不能对不同命令设置不同的过期时间、超时时间,没有全局权限、全局 only_to_me(1.8.2, 1.9.0)
  • 权限控制功能不够强大,无法进行单用户和群组粒度的控制 (1.8.0, 1.9.0 PermissionPolicy)
  • 命令会话机制针对单个用户做区分,无法简单地实现群组内多人游戏等需求
  • 没有持久化命令会话 (1.8.0 apause)
  • 没有维护用户、群组、系统全局的整体状态,只有命令层面的状态
  • ……

最近想到 QQ 机器人的开发其实可以从现在流行的语音助手里面寻找灵感,比如对话的回合数、对一些可选参数如何假定、通过辅助的 app 或 web 管理面板来修改配置等。实际上 web 面板这个功能也是可以加入到 NoneBot 的,可以把面板的控制项以可扩展的形式开放 API。

另外,考虑 NoneBot 的定位,我希望它可以被用于任何聊天机器人的场景,无论是闲聊对话、信息查询、推送通知、消息转发、游戏等。

目前命令的参数处理方面的 API 其实也不够好,1.2 版本加入的参数过滤器一定程度上缓解了 args_parser 的复杂和冗余,但总觉得还是不够。

总的来说 NoneBot 还有非常大的提高空间,但由于我今年需要准备考研,因此 NoneBot 会暂停开发将近一年。一年之后,如果时间恰当的话,我打算完全重写这个框架。

如果大家在使用过程中有什么比较好的思路、使用案例,可以在这里讨论,等重写的时候,可以尽可能的考虑更多实际使用需求。

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussionOpen discussions on topics related to this project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions