支持

Dituon 发布的帖子
-
RE: java如何使用mockbot来做捕获事件测试?
@hisou 我实现过这种需求,是用
LinkedHashMap<Long, String>
建立了图片缓存,仅缓存用户发送的图片,并指定缓存容量。伪代码
private LinkedHashMap<Long, String> imageCachePool; // 插件初始化 if (service.respondReply) { imageCachePool = new LinkedHashMap<>(service.cachePoolSize, 0.75f, true) { @Override public boolean removeEldestEntry(Map.Entry eldest) { return size() > service.cachePoolSize; } }; GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessageEvent.class, this::cacheMessageImage); GlobalEventChannel.INSTANCE.subscribeAlways(GroupMessagePostSendEvent.class, this::cacheMessageImage); } private void cacheMessageImage(MessageEvent e) { for (SingleMessage singleMessage : e.getMessage()) { if (singleMessage instanceof Image) { long id = e.getSubject().getId() + e.getMessage().get(MessageSource.Key).getIds()[0]; imageCachePool.put(id, Image.queryUrl((Image) singleMessage)); return; } } } // 主消息处理方法 for (SingleMessage singleMessage : e.getMessage()) { if (singleMessage instanceof QuoteReply && service.respondReply) { long id = e.getGroup().getId() + ((QuoteReply) singleMessage).getSource().getIds()[0]; if (imageCachePool.get(id) == null) continue; //使用缓存的图片链接 } }
-
RE: java如何使用mockbot来做捕获事件测试?
原消息内容有什么用途呢 ?
如果只需要获取文本的话,可以 监听消息并取出引用消息实例直接获取文本 (例如: 引用消息的图片或at会转换为
[图片]
和@xxx
的形式)如果需要获取完整的原消息的话,可以考虑 通过消息id进行缓存 ,回复时从缓存取出原消息。
希望能具体描述一下想要实现的功能,而不是直接放出一段用于测试的代码
补充: 因为Mirai对于引用消息的处理在这两个获取方式下是有区别的,所以要按情境选择适合的方法进行处理, 建议补充实际使用场景便于解决问题
-
RE: QQ群bot官方接口,与使用体验
简单说一下腾讯的狗屎接口和审核机制:
接口
-
群聊接口完全只能关键词回复,无法获取用户任何信息(昵称,头像),腾讯使用一长串id来代替用户的qq号,而且每个群同一用户的id不一样。
-
无法获取回复消息的原消息
-
会被腾讯添加at用户的提示
审核
添加功能要审核,bot上线要审核,切换白名单也要审核;最逆天的是审核时不能更改信息,只能等审核结束才可以
还有最恶心的是,腾讯审核员 完全不看 你的测试报告或者提示,如下图
-