Solved command双重调用问题
-
如题,
经过测试,安装了LuckPerms插件的mirai,在测试command
时会出现命令重复调用问题,在本地无LuckPerms
插件的bot则可以正常使用command
命令,不会出现重复调用问题。-
本地:
-
安装了插件的服务器:
请教该问题出现的原因以及解决方式?
- 另附代码段:
onEnable
:CommandManager.INSTANCE.registerCommand(Mycommand.INSTANCE, false);
myCommand
:public class Mycommand extends JSimpleCommand { public static final Mycommand INSTANCE = new Mycommand(); private Mycommand(){ super(Plugin.INSTANCE, "test", new String[]{"s"}, Plugin.INSTANCE.getParentPermission()); setDescription("这是一个测试command"); } @Handler public void onCommand(CommandSender sender, String mes){ sender.sendMessage("test"); } }
EventHandler
:FriendCommandSenderOnMessage to = new FriendCommandSenderOnMessage(event); CommandManager.INSTANCE.executeCommand(to, event.getMessage(),false); MemberCommandSenderOnMessage to = new MemberCommandSenderOnMessage(event); CommandManager.INSTANCE.executeCommand(to, event.getMessage(),false);
以下测试基于本地没有LuckPerms插件的环境:
尽管我知道我似乎不应该在EventHandler
中再次监听命令,但是不监听他就是不响应……去掉好友监听好友不响应,去掉群监听群不响应?? -
-
-
另附双触发日志:
使用
command
:2021-08-21 21:29:17 V/Bot.qq: [bot 测试(qq)] Orisland Unlimit() -> /s @主bot qwe
错误的双触发:
2021-08-21 21:29:17 V/Bot.qq: Event: GroupMessagePreSendEvent(target=Group(qq), message=wocao ) 2021-08-21 21:29:17 V/Bot.qq: Group(qq) <- wocao 2021-08-21 21:29:17 V/Bot.qq: Event: GroupMessagePostSendEvent(target=Group(qq), message=wocao , exception=null, receipt=net.mamoe.mirai.message.MessageReceipt@1fe87ff1) 2021-08-21 21:29:17 V/Bot.qq: Event: GroupMessagePreSendEvent(target=Group(qq), message=wocao ) 2021-08-21 21:29:17 V/Bot.qq: Group(qq) <- wocao 2021-08-21 21:29:17 V/Bot.qq: Event: GroupMessagePostSendEvent(target=Group(qq), message=wocao , exception=null, receipt=net.mamoe.mirai.message.MessageReceipt@3728e35d)
-
如果你运行的是最新的luckperms,执行 lp verbose on, 鼠标移动至 MessageLog显示的文本上,显示的堆栈信息有助于debug
-
基于你再次注册了 executeCommand 判断 chat-command执行了一个命令你自己又执行了一次命令,与 luckperms 无关
-
@karlatemp
插件版本为luckperms-mirai-2.5-RC-dev-3+5.3-SNAPSHOT.jar
可是我不在eventHandler
里写,bot就不响应命令=。=
去除好友/群事件监听中的executeCommand
后则对应的好友/群命令无法响应。 -
chat-command已经做了执行命令的事情你在做一次不就执行了两次
至于你说的不加不会执行命令,你给权限了没
-
@karlatemp
以下环境均在本地没有安装luckperm插件的环境下测试
权限测试全过程:-
好友私聊,
eventHandler
重复执行代码段存在:
-
注释
eventHandler
:
-
再次测试:
command
失效。 -
删除注释->
command
有效.
-
我:???????
-
-
然后我开始怀疑我是不是注册部分写错了还是怎么的,注册失败命令那不应该会出现在help命令里啊,出现上面情况的原因,我觉得在本地测试更像是写在
myCommand
里的handler
注解并没有起到任何作用,但是安装了luckperm
后这个handler
又自己恢复了??我开始进入迷惑状态。 -
你命令斜杠呢
-
@karlatemp prefix里已删除,我不喜欢在命令前面带斜杠。
而且带不带斜杠都是不行的……
下图为eventHandler
中注释掉相关代码后的命令表现:
另附权限截图:
-
-
@karlatemp
脸是晚上丢的,人是连夜走的。
光速逃离mirai论坛
我真不知道idea-mirai插件自带的工程里没有集成chat-command