已解决 java版command相关问题
-
java版的command到底怎么用啊……
照着例子搞了半天,发现一直在缺变量,但是例子里压根就没写
然鹅实际上例子里的变量哪来的我都不知道emmm
初始化给了两个变量根本不行,这个例子给我整傻了……
24K萌新求解。
参考链接 -
@orisland 在 新手求助java版的command到底怎么用啊…… 中说:
你这样写的意思就是要求两个参数啊。是来自console文档样例吧,那里也注释了// 这两个参数会被作为指令参数要求
@Handler public void onCommand(CommandSender sender, User target, String mes){ target.sendMessage(mes); }
这才是不需要参数(参考QuizCommand类exit方法):
@Handler public void onCommand(CommandSender sender){ sender.sendMessage("hello world"); }
-
开发使用文档是不是没更新过?感觉和给的例子对不上……
-
好家伙,我试了一圈好像都不太能用……
-
为了避免Java这样的蛋疼情况 我去学了Kotlin -
mirai
一.命令相关操作
1.创建一个类继承mirai api里的命令
public final class MyCommend extends JSimpleCommand { public static final MyCommend INSTANCE = new MyCommend(); private MyCommend() { super(Plugin.INSTANCE, "tell", new String[]{"s"}, Plugin.INSTANCE.getParentPermission()); this.setDescription("这是测试命令"); } @Handler public void onCommand(CommandSender sender, User target,String message) { target.sendMessage(message); } }
2.在onEnable()中注册命令
CommandManager.INSTANCE.registerCommand(MyCommend.INSTANCE,true);
3.就可在消息事件监听中执行命令了
CommandSenderOnMessage to = new MemberCommandSenderOnMessage(e); CommandManager.INSTANCE.executeCommand(to,e.getMessage(),false);
-
昨天摸索出来的,我也不太懂
-
为了避免Java这样的蛋疼情况 我去学了Kotlin
-
为了避免Java这样的蛋疼情况 我去学了Kotlin
-
我Java好像没用到command
-
@1328189205 感谢,我试试,java相关的代码可太少了……
-
这方面文档确实很缺
-
@1328189205 在 新手求助java版的command到底怎么用啊…… 中说:
3.就可在消息事件监听中执行命令了
CommandSenderOnMessage to = new MemberCommandSenderOnMessage(e); CommandManager.INSTANCE.executeCommand(to,e.getMessage(),false);
这样用好像有问题。
我自己写的SubCommand插件实测发现(直接用JSimpleCommand应该也是同理),如果用户(为了使用别的插件的命令)同时装了chat-command插件,当群消息里发出这条指令时,一方面chat-command插件使得你的onCommand()被调用一次,另一方面你插件里的EventHandler会再使得你的onCommand()被调用一次。一共两次。 -
为了避免Java这样的蛋疼情况 我去学了Kotlin教程里的《混用Java和Kotlin的方法》然后继续用Java
-
@hundun000 然而似乎我的并不会做出相关反应??
-
@orisland
指的是完整的1、2、3步都做的情况。你如果不是用Command那就不是我所说的情况。 -
@EventHandler public ListeningStatus friendListener(FriendMessageEvent event) throws IOException { CommandSenderOnMessage to = new FriendCommandSenderOnMessage(event); CommandManager.INSTANCE.executeCommand(to,event.getMessage(),false);
@SneakyThrows @Override public void onEnable() { getLogger().info("Plugin loaded!"); OSSset(); getLogger().info("OSS loaded!"); setOcr(); getLogger().info("OCR loaded!"); CommandManager.INSTANCE.registerCommand(Mycommand.INSTANCE, true); GlobalEventChannel.INSTANCE.registerListenerHost(new Handler()); }
public class Mycommand extends JSimpleCommand { public static final Mycommand INSTANCE = new Mycommand(); private Mycommand(){ super(Plugin.INSTANCE, "tell", new String[]{"s"}, Plugin.INSTANCE.getParentPermission()); this.setDescription("test command!"); } @Handler public void onCommand(CommandSender sender, User target, String mes){ target.sendMessage(mes); } }
但是奇怪的是相同的插件我放在服务器上的mirai就会做出响应。
本机进行测试则不响应任何指令。 -
同时,似乎我必须要求输入二级命令,尽管我不需要,二级命令这里输入null会直接抛异常。
-
@hundun000 然而问题实际好像是,无法授权?
问题如下,控制台有效,私聊无效,群聊无效
-
你也没说你的talk响应是什么
-
@cssxsh 单纯的回复……
@Handler public void onCommand(CommandSender sender, User target, String mes){ target.sendMessage(mes); }