project-mirai / mirai-api-http

Mirai HTTP API (console) plugin
GNU Affero General Public License v3.0
1.66k stars 343 forks source link

能不能尝试出一个消息频率限制?比如收到消息后随机等5-30秒后再回复,这层限制能否加载mirai上?就是如果有其他插件直接调用mirai的发消息,也可以有限制这个样子的 #742

Closed HuaWaterED closed 1 year ago

ryoii commented 1 year ago

我有做过类似的东西用在了自己的 mirai 应用里,提取成插件不太麻烦,不过设计成通用的可配置插件还是比较麻烦的。你有好的建议可以提出来看看

HuaWaterED commented 1 year ago

不太清楚kt语言,插件没办法继承mirai的方法然后重写吗?或者是中间有什么其他原因,可以交流一下

HuaWaterED commented 1 year ago

我尝试去mirai的issues下提出这个建议,看看mirai怎么回复

HuaWaterED commented 1 year ago

mirai回复是“有消息预发送事件,这个功能可以用插件来实现”,请问这个事件是在mirai内部还是已经实现了这个事件可以直接通过http的方式或者ws等其他方式交互进行配置?

ryoii commented 1 year ago

可以提供一个新插件来做,但是我不太知道需要怎么样的可选配置

限速还是配置比较灵活的内容。比如需不需要提供不同的限速算法,对平滑性的要求,应对流量突刺的能力,是全局拦截还是可以针对指定群聊或用户,不同群聊或用户是否需要分配不同权重,触发限流后是快速失败还是阻塞

内容还是很多的

HuaWaterED commented 1 year ago

如果只把mirai的消息预发送事件的各种方法做成可调用的api,这方便吗?我可以自己通过C#语言自行编写调用您的api

ryoii commented 1 year ago

不太行,http api 对于事件更多是一个 监听-通知 的功能。限流这种要求更像是 监听-拦截,通过 http api 让远端处理拦截只能在 web hook 上操作。而且这样会会把事件挂起太影响效率了

HuaWaterED commented 1 year ago

那有什么方法可以更改mirai发消息的逻辑吗(不一定非要在mirai-api-http插件中,比如mirai在即将发QQ消息的时候通过ws通知其他服务器,其他服务器同意将QQ消息发出,通知mirai,然后再将消息发出,如果这个想法不合理的话那我在此道歉

ryoii commented 1 year ago

不太建议通过 http api 实现这个。这样吧,我发布一个限流功能的插件,先按我设想的功能开发。有什么更好的想法再慢慢迭代

HuaWaterED commented 1 year ago

感谢感谢,可以加您吗?方便后续交流什么的

ryoii commented 1 year ago

我之后直接把新插件的主页贴到这个 issue 上

HuaWaterED commented 1 year ago

好的

ryoii commented 1 year ago

仓库地址

现在还没有上传到插件仓库,现在 workflow 上获取手动安装试试效果

有什么问题在新仓库反馈

gebederry commented 1 year ago

仓库地址

现在还没有上传到插件仓库,现在 workflow 上获取手动安装试试效果

有什么问题在新仓库反馈

佬,请求适配 mirai 2.16+ 的新增特性,主要是发送视频 🙏

ryoii commented 1 year ago

仓库地址 现在还没有上传到插件仓库,现在 workflow 上获取手动安装试试效果 有什么问题在新仓库反馈

佬,请求适配 mirai 2.16+ 的新增特性,主要是发送视频 🙏

在做了在做了

HuaWaterED commented 1 year ago

哇,我还在给自己的新QQ号养号, 大佬已经做出来了

HuaWaterED commented 1 year ago

在提issue之前号被ban了(笑哭

ryoii commented 1 year ago

有问题在新仓库反馈