Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行另一个方法时未运行事件方法(Discord JDA)_Java_Discord Jda - Fatal编程技术网

Java 执行另一个方法时未运行事件方法(Discord JDA)

Java 执行另一个方法时未运行事件方法(Discord JDA),java,discord-jda,Java,Discord Jda,我正在用JDA制作一个Java discord机器人。在我的onMessageReceived()方法中,我创建了游戏类的新类对象,然后运行我的Game.start()方法。在方法的末尾,该方法执行game类中的另一个方法,onMessageReceived()方法应该完成。但是,它完全停止工作,直到游戏对象的方法字符串完成。然后,它处理中间发送的所有消息并输出结果。为什么会发生这种情况?当我的游戏对象正在执行方法时,如何使onMessageReceived()工作 以下是我在onMessage

我正在用JDA制作一个Java discord机器人。在我的onMessageReceived()方法中,我创建了游戏类的新类对象,然后运行我的Game.start()方法。在方法的末尾,该方法执行game类中的另一个方法,onMessageReceived()方法应该完成。但是,它完全停止工作,直到游戏对象的方法字符串完成。然后,它处理中间发送的所有消息并输出结果。为什么会发生这种情况?当我的游戏对象正在执行方法时,如何使onMessageReceived()工作

以下是我在onMessageReceived()中的相关代码:

从游戏方法来看:

public void start(int qs, String categoryin, String difficultyin, String typein) {
        channel.sendMessage("Starting Trivia...").queue();
        numberofqs = qs;
        String difficulty;
        String type;
        String category;
        pointsperq = 1;
        if (difficultyin.equalsIgnoreCase("easy")) {
            difficulty = "easy";
            channel.sendMessage("Difficulty = Easy").queue();
        } else if (difficultyin.equalsIgnoreCase("normal")) {
            difficulty = "medium";
            pointsperq = pointsperq*2;
            channel.sendMessage("Difficulty = Normal").queue();
        } else if (difficultyin.equalsIgnoreCase("hard")) {
            difficulty = "hard";
            pointsperq = pointsperq*3;
            channel.sendMessage("Difficulty = Hard").queue();
        } else  {
            difficulty = "";
            channel.sendMessage("Difficulty = Any").queue();
            pointsperq = pointsperq*2;
        }
        if (typein.equalsIgnoreCase("tf")) {
            type = "boolean";
            channel.sendMessage("Question Type = True/False").queue();
        } else if (typein.equalsIgnoreCase("mc")) {
            type = "multiple";
            pointsperq = pointsperq*3;
            channel.sendMessage("Question Type = Multiple Choice").queue();
        } else {
            type = "";
            pointsperq = pointsperq*2;
            channel.sendMessage("Question Type = Any").queue();
        }
        if (triviaDB.getCategory().contains(categoryin)) {
            channel.sendMessage("Category = "+categoryin).queue();
            category = categoryin;
        } else {
            channel.sendMessage("Category = Any").queue();
            category = "";
        }
            channel.sendMessage("# of Q's = "+qs).queue();
        questions = new HashMap<>(triviaDB.getQuestions(qs, category, difficulty, type));
        qnumber = 1;
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        channel.sendMessage("Welcome to Trivia Game "+name).queue();
        channel.sendMessage("Starting in 10 Seconds!").queue();
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        displayQuestion(qnumber);
    }
public void start(int-qs,String-categoryin,String-hardicultyin,String-typein){
channel.sendMessage(“启动琐事…”)。queue();
numberofqs=qs;
弦乐难度;
字符串类型;
字符串类别;
pointsperq=1;
if(同等信号情况下的困难(“容易”)){
难度=“容易”;
channel.sendMessage(“困难=容易”).queue();
}else if(同等信号情况下的困难(“正常”)){
难度=“中等”;
pointsperq=pointsperq*2;
channel.sendMessage(“难度=正常”).queue();
}else if(同等信号情况下的困难(“硬”)){
难度=“难”;
pointsperq=pointsperq*3;
channel.sendMessage(“难度=硬”).queue();
}否则{
难度=”;
channel.sendMessage(“困难=任何”).queue();
pointsperq=pointsperq*2;
}
如果(键入相等信号情况(“tf”)){
type=“boolean”;
channel.sendMessage(“问题类型=真/假”).queue();
}else if(键入相等信号情况(“mc”)){
type=“多个”;
pointsperq=pointsperq*3;
channel.sendMessage(“问题类型=多项选择”).queue();
}否则{
类型=”;
pointsperq=pointsperq*2;
channel.sendMessage(“问题类型=任何”).queue();
}
if(triviaDB.getCategory().contains(categoryin)){
channel.sendMessage(“Category=“+categoryin).queue();
类别=类别;
}否则{
channel.sendMessage(“Category=Any”).queue();
类别=”;
}
channel.sendMessage(“#of Q's=“+qs).queue()”;
问题=新的HashMap(triviaDB.getQuestions(qs、类别、难度、类型));
qnumber=1;
试一试{
睡眠(3000);
}捕捉(中断异常e){
e、 printStackTrace();
}
channel.sendMessage(“欢迎来到琐事游戏”+name).queue();
channel.sendMessage(“10秒后开始!”).queue();
试一试{
睡眠(10000);
}捕捉(中断异常e){
e、 printStackTrace();
}
显示问题(qnumber);
}
public void start(int qs, String categoryin, String difficultyin, String typein) {
        channel.sendMessage("Starting Trivia...").queue();
        numberofqs = qs;
        String difficulty;
        String type;
        String category;
        pointsperq = 1;
        if (difficultyin.equalsIgnoreCase("easy")) {
            difficulty = "easy";
            channel.sendMessage("Difficulty = Easy").queue();
        } else if (difficultyin.equalsIgnoreCase("normal")) {
            difficulty = "medium";
            pointsperq = pointsperq*2;
            channel.sendMessage("Difficulty = Normal").queue();
        } else if (difficultyin.equalsIgnoreCase("hard")) {
            difficulty = "hard";
            pointsperq = pointsperq*3;
            channel.sendMessage("Difficulty = Hard").queue();
        } else  {
            difficulty = "";
            channel.sendMessage("Difficulty = Any").queue();
            pointsperq = pointsperq*2;
        }
        if (typein.equalsIgnoreCase("tf")) {
            type = "boolean";
            channel.sendMessage("Question Type = True/False").queue();
        } else if (typein.equalsIgnoreCase("mc")) {
            type = "multiple";
            pointsperq = pointsperq*3;
            channel.sendMessage("Question Type = Multiple Choice").queue();
        } else {
            type = "";
            pointsperq = pointsperq*2;
            channel.sendMessage("Question Type = Any").queue();
        }
        if (triviaDB.getCategory().contains(categoryin)) {
            channel.sendMessage("Category = "+categoryin).queue();
            category = categoryin;
        } else {
            channel.sendMessage("Category = Any").queue();
            category = "";
        }
            channel.sendMessage("# of Q's = "+qs).queue();
        questions = new HashMap<>(triviaDB.getQuestions(qs, category, difficulty, type));
        qnumber = 1;
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        channel.sendMessage("Welcome to Trivia Game "+name).queue();
        channel.sendMessage("Starting in 10 Seconds!").queue();
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        displayQuestion(qnumber);
    }