project-mirai / mirai-api-http

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

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

Closed HuaWaterED closed 10 months ago

ryoii commented 10 months ago

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

HuaWaterED commented 10 months ago

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

HuaWaterED commented 10 months ago

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

HuaWaterED commented 10 months ago

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

ryoii commented 10 months ago

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

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

内容还是很多的

HuaWaterED commented 10 months ago

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

ryoii commented 10 months ago

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

HuaWaterED commented 10 months ago

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

ryoii commented 10 months ago

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

HuaWaterED commented 10 months ago

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

ryoii commented 10 months ago

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

HuaWaterED commented 10 months ago

好的

ryoii commented 10 months ago

仓库地址

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

有什么问题在新仓库反馈

gebederry commented 10 months ago

仓库地址

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

有什么问题在新仓库反馈

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

ryoii commented 10 months ago

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

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

在做了在做了

HuaWaterED commented 10 months ago

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

HuaWaterED commented 10 months ago

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

ryoii commented 10 months ago

有问题在新仓库反馈