-
-
Notifications
You must be signed in to change notification settings - Fork 337
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于 NoneBot 未来发展的思考 #53
Comments
emm……一年后我的机器人看来也要完全重写了?(噗 |
目前给我的感觉nonebot相较于其他的sdk过于繁琐。文档中对于程序的目录格式要求,以及命令处理的支持 |
@needhourger 其实如果真的是这个需求的话,可以使用 python-aiocqhttp,这个 SDK 的定位就是仅仅提供一个最基础的 CQHTTP 插件的 Python binding |
啊,这倒提醒我了。之前是为了图方便和先熟悉一下用的none,现在可以用底层SDK自给自足咯。 |
这样的话,我觉得你想做的是把 nonebot 写成一个通用的机器人框架了,不如干脆提供统一的 websocket api,用 aiocqhttp 桥接 nonebot 和 酷Q,tg 也可以直接通过 websocket api 接入同一个 nonebot. |
或者说把 酷Q 独有的一些东西,写成一个 nonebot 插件,独立提供。 群/用户级别的权限,或者一些比较通用的命令,也可以通过 Web 页面来设置、组合。 |
顶一下这个,感觉这里面涉及到共享 session 所有权以及所有权转移控制问题。 |
这个问题其实主要涉及到 at 和图片的处理,尤其是 at,不同平台真的差距非常大,支持起来负担很大 /流泪 ——一个踩过一年坑的人建议还是把精力放在有灵魂的功能上,不要做这么繁琐又没有意义的事情(嘤嘤嘤 |
个人感觉现在 |
23333,适配确实是过于繁琐了,反正先讨论着,到时候再决定怎么写
感觉游戏算是个蛮实际的需求,不过我有点不太清楚现在那些游戏都是什么个逻辑,自己没写过 |
比如 用户 说了一句 这样的情况现能实现吗? RT:使用命令函数触发获取以往消息怎么写 如果写DB,或者全局变量,仅仅是为了这一个功能那实在太亏了 如果不行 是不支持持久化命令会话的原因吗? |
@huaji0353 你这个功能必然是要保存每个潜在用户的最近几条消息的 |
正在用nonebot(个人娱乐用途),很感谢大佬的付出。 使用中遇到了一些细节,刷github的时候看到了这条issue,来抱怨一下 (^_^),想到哪里说到哪里,见谅。
msg=Message()
msg.append(MessageSegment.image(url)) # url 可以是本地文件路径、网址 如果部署在不同机器上的话,传入本地文件路径时,把图片上传到cqhttp,cqhttp保存到酷q的data/image下,再发送整条消息。传网址时同理,cqhttp先把图片下载到酷Q的data/image下。 这个应该算是cqhttp的问题,这里姑且一提。 关于nonebot未来的发展
目前我自己使用体验上来看,确实是【命令】重于【对话】,这方面的改进恕我暂时只想到封装一个
web面板我简单做过一个,实际用了几天,发现不是很好用,特别是用手机的时候突然想改点什么的时候,切到浏览器打开网页挺麻烦的。前端还得适配移动端,写起来也麻烦。 比较自然的想法是直接发送一条消息给机器人查询、修改配置项: 不清楚您对web面板是怎么考虑、需求场景是什么样的,所以我还是保留意见。不过提供一些实用的内置命令也许不错=w=。 目前只想到这些,刚发现忘记给star了,补上(^_^) |
aiocqhttp是可以自己修改成支持别的机器人平台的 自己改一改就好了 |
“没有全局黑名单机制”,“没有维护用户、群组、系统全局的整体状态“ 这两个个 feature 我是在 https://github.com/Ice-Cirno/HoshinoBot 这个基于 nonebot 的项目中有看到。 个人感觉前一个 feature 可以考虑加入 nonebot 框架中。但是状态管理可能还是交给应用层自行管理比较好。 |
据我的观察权限控制仅仅靠那几个 my_perm_setting = Permission(
lambda perm, event: (perm.ISSUPERUSER or perm.ISGROUP_MEMBER) and event.sender_id != 123456789
)
@on_command("weather", permission=my_perm_setting)
async def _(session): ... 或者裝飾器。把 lambda 在收到消息的時候跑一下來篩選權限。 |
有趣,看起来在 nb2 的思路里面这个可以很方便地实现,cc @yanyongyu |
之前在 QQ 群裏看到過兩三次問道如何給命令加冷卻時間,覺得這個功能差不多也可以整到這裏面。我自己就搞過,很容易。只是不瞭解多綫程裏有沒有問題。link |
實際上用 lambda 表示權限在 1.8.0 就引入了,你可以看下文檔 https://docs.nonebot.dev/advanced/legacy_features.html#%E6%9D%83%E9%99%90%E5%A3%B0%E6%98%8E%E5%B8%B8%E9%87%8F 和 https://docs.nonebot.dev/advanced/permission.html (and,現在最新版本是 1.9.1 |
NoneBot 在有限的推广的情况下,被这么多人使用,让我感到很意外。它甚至到现在文档还没有完全写完🙄 。
经过半年多的发展,NoneBot 已经基本可用,虽然还是会有一些小问题,但这不妨碍已经有很多投入使用的应用在使用它。
实际上 NoneBot 还有很多不足,比如:
on_message
装饰器来做到);实际上 NoneBot 的前身,小开机器人,的「过滤器」特性还是比较有用的,可以用来进行消息预处理(比如日志、语音转文本)和拦截(比如屏蔽特定消息类型),但在写 NoneBot 的时候砍掉了 (1.6.0message_preprocessor
)only_to_me
等 (1.8.2, 1.9.0)PermissionPolicy
)apause
)最近想到 QQ 机器人的开发其实可以从现在流行的语音助手里面寻找灵感,比如对话的回合数、对一些可选参数如何假定、通过辅助的 app 或 web 管理面板来修改配置等。实际上 web 面板这个功能也是可以加入到 NoneBot 的,可以把面板的控制项以可扩展的形式开放 API。
另外,考虑 NoneBot 的定位,我希望它可以被用于任何聊天机器人的场景,无论是闲聊对话、信息查询、推送通知、消息转发、游戏等。
目前命令的参数处理方面的 API 其实也不够好,1.2 版本加入的参数过滤器一定程度上缓解了
args_parser
的复杂和冗余,但总觉得还是不够。总的来说 NoneBot 还有非常大的提高空间,但由于我今年需要准备考研,因此 NoneBot 会暂停开发将近一年。一年之后,如果时间恰当的话,我打算完全重写这个框架。
如果大家在使用过程中有什么比较好的思路、使用案例,可以在这里讨论,等重写的时候,可以尽可能的考虑更多实际使用需求。
The text was updated successfully, but these errors were encountered: