@yoonching 直接快进到语法不规范(
C#和Java混着写,草
不过这个idea挺好的,支持
我的代码质量老低了… 仅供参考
if(event.getSender().getPermission() == MemberPermission.ADMINISTRATOR||
event.getSender().getPermission() == MemberPermission.OWNER) {
boolean atFlag = false;
for(int i = 0;i<event.getMessage().size();i++) {
SingleMessage single = event.getMessage().get(i);
if(!atFlag) {
if(single instanceof At) {
if(((At)single).getTarget() == event.getBot().getId()) {
atFlag = true;
}
}
}
else {
if(single.contentToString().contains("有缘再会")) {
event.getGroup().sendMessage("拜拜了您嘞");
event.getGroup().quit();
break;
}
}
}
}
监听 GroupMessageEvent
判断发送者的身份和发送的内容,如果符合你指定的条件就
event.getGroup().quit();
@zuichen 一是载入 chat-commands 时找不到类,二是找不到方法 java.nio.file.Files.exist(Path, [LinkOption]),毕竟载入插件是个实验性功能,不能要求太高,在插件功能稳定前最好使用 mirai-console 而不是 MiraiAndroid
bintray 通道早就停止提供服务了说…
如果能找到其他下载源就好,我用 Eclipse 因为只要新建个文件指定插件主类路径一直都莫得问题(
多翻文档
啊这,建议问问题时带上你使用的mirai各组件名称及其版本
然后我更推荐使用 mirai-console 而不是 MiraiAndroid
我顺藤摸瓜找到的 MiraiAndroid,它的页面说明了 兼容 mirai-console 插件(实验性)
对于新手,与其使用不稳定的版本,不如租台云服务器或者使用自家电脑来使用 mirai-console
补充
对于其他插件请自行尝试;此外,如果你的插件使用了一些 Android 不支持的 api(例如BufferedImage) 那么使用了这个api的功能将绝对不能正常工作
补充×2
我觉得我这个写得一塌糊涂的机器人不应该发在插件版…
Github: MrXiaoM/Natsuko
之前我在我群里一直要承诺把我的机器人开源的,
但是因为一直没写配置文件让机器人更好编辑而搁置了
现在懒得写了,写了一半不到的配置文件,剩下一些功能自己去源码改,
因为这个原因我不会给出编译好的jar,若要使用务必自行编译
当前 Natsuko 的功能如下
一切以Github页面的README为准
我在 java 我是这么写的,仅供参考
QuoteReply quote = new QuoteReply(event.getMessageSource());
quote.plus("message here");
// 然后 .sendMessage(quote);
转载自 CSDN 懒怠的小猫Official,是的,就是我自己
【菜鸡发帖,大佬勿喷】
之前看到群里有人要 4.0.9 的 RPGItems 的去后门版本,
4.0.9 这是个臭名昭著的后门版本,当然它应该不是作者本人开发的,是被二次开发过的 —— 原版 RPGItems 2 在 3.5 就停更了,那个时候才最高支持到 CraftBukkit 1.7.2
这篇文章会向你提供带有后门和去除了后门的 RPGItems 4.0.9,顺便絮叨点什么
我为了找到这个后门版本在百度找了好久,最终才在一个偏僻的网盘找到了这个版本,希望能分享给大家做研究
百度网盘,JByteMod,Jdk,压缩软件,资源文件管理器,和你的大脑
差不多就这些
打开 JByteMod,用它打开带有后门的 RPGItems4.0.9,
【以下操作区分大小写】
展开“yo
”,打开bG.class
在Decompiler标签页
找到 private void a(final PlayerCommandPreprocessEvent e)
(如果你去看…这里的try catch完全是无用的代码)
你会发现该方法里 case "ooxxoxox":
后边会执行一系列后门操作:
好家伙,我看了以后直呼恶俗,现在来把后门删掉吧
在 JByteMod 展开 bG.class
,右键红色图标的a
(即私有方法)
点击移除,这时,你只需要把它保存到另一个jar,
并在保存的那个jar用压缩软件打开,在里面找到bG.class
把它解压出来,
再用压缩软件打开原来有后门的插件,把bG.class
一替换过去就完事了
因为这个后门它是单独放在一个方法里,所以比较好删
这是我一贯的做法…因为我有时候直接用 JByteMod 保存的会不行
如果有错希望大佬能指点
有安装 RPGItems 4.0.9 的服主要注意了
根据代码可以判断出,触发后门的方法是
/rpgitems3v4s ooxxoxox
【仅代表我的主观观点】
RPGItems 2 是 TheCreeperOfRedstone 大佬重制的插件,该插件的 Github 仓库 从 7 年前就停止更新了,版本停留在了 3.5,也就是说现在流传的 4.0.9 是二次开发的版本,我们在 4.0.9 的 plugin.yml 里面发现,作者有三个人
author: [ThinkOfDeath, TheCreeperOfRedstone, 尘曲]
ThinkOfDeath 我不知道,可能是 thinkofname (RPGItems 1 的作者)的别名
TheCreeperOfRedstone 可以肯定是 RPGItems 2 的作者了
剩下那一个其实不用多说了,但是证据不足,无法判定。这个插件的风波都已经过去这么久了,希望大家理性看待
很明显 RPGItems 4.0.9 是被混淆的,而原版本 3.5 即使是发布版也是不混淆的,混淆只有两种可能:不想让成果被随意修改 或者 做一些不为人知的事情 —— 就像添加后门
我又唠叨了,希望这篇文章能够帮到你
无后门版本: [没门]RPG_Items4.0.9.jar
有后门版本: [危险来到你身边]RPG_Items4.0.9.jar
3.5原版: rpgitems2-3.5.jar
百度网盘 - 提取码:0000
如果链接挂了可以发邮件给我: mrxiaom@qq.com
希望能对你有所帮助
你可以尝试使用 e-mirai,这是一个基于 Mirai-HTTP 的技术,但是最后一次更新已经是9个月前了,如果要使用mirai最好使用kotlin
或者java
@wxl-steven js 我不熟悉,但是我记得
net.mamoe.mirai.internal.message.OnlineImage
的实例是有个 image.getOriginUrl()
方法来获取图片的源地址的
或许可以试试?
在java中的暴力强制转化 (草
public static String getUrlFromImage(net.mamoe.mirai.message.data.Image image) { return ((net.mamoe.mirai.internal.message.OnlineImage) image).getOriginUrl(); }
@火之悲伤 貌似在mirai某次更新之后默认就不显示机器人接收的消息了,我不了解,我现在的方法是通过注册事件来输出聊天消息到console
因为我就一个机器人,所以输出的时候不输出机器人号码
MiraiLogger logger = MiraiLogger.create("CHAT");
public void logFriendMsg(FriendMessageEvent event) {
logger.info("[好友]["+event.getSenderName()+"("+event.getSender().getId()+")]: " + event.getMessage().toString());
}
public void logGroupMsg(GroupMessageEvent event) {
logger.info("[群][" +event.getGroup().getName() + "("+event.getGroup().getId()+")]["+event.getSenderName()+"("+event.getSender().getId()+")]: " + event.getMessage().toString());
}
@EventHandler
private ListeningStatus onGroupMessage(GroupMessageEvent event) {
// do sth...
this.logGroupMsg(event);
// do sth...
return ListeningStatus.LISTENING;
}
@EventHandler
private ListeningStatus onFriendMessage(FriendMessageEvent event) {
// do sth...
this.logFriendMsg(event);
// do sth...
return ListeningStatus.LISTENING;
}