如何在触发条件时退出一个方法并运行另一个方法,JDA 不和谐包装器

Posted

技术标签:

【中文标题】如何在触发条件时退出一个方法并运行另一个方法,JDA 不和谐包装器【英文标题】:How do i exit from a method and run another when a condition is triggered, JDA discord wrappper 【发布时间】:2021-12-08 17:37:19 【问题描述】:
public void onMessageReceived(MessageReceivedEvent event) 
    String[] messagelements = event.getMessage().getContentRaw().split("\\s+");
    if (event.getMessage().getContentRaw().equalsIgnoreCase("what is the number beside " + wordanswer) && event.getAuthor().isBot())
        time = System.currentTimeMillis();
        while (System.currentTimeMillis() -  time <= 8000)
            if (answered.equalsIgnoreCase("answered")) 
                return;
            else 
                try 
                    Thread.sleep(1);
                 catch (InterruptedException e) 
                    Thread.currentThread().interrupt();
                    return;
                
            
        
        if (answered.equalsIgnoreCase("notanswered"))
            event.getChannel().sendMessage("times up").queue();
        

    

public void onMessageReactionAdd (MessageReactionAddEvent event) 
    Thread.currentThread().setPriority(10);
    if (event.getUser().equals(worker)) 
        if (answered.equalsIgnoreCase("notanswered"))
            if (event.getReactionEmote().getName().equalsIgnoreCase(emoteanswer))
                event.getChannel().sendMessage("Correct!").queue();
            
            else
                event.getChannel().sendMessage("Wrong").queue();
            
            answered = "answered";
        
    

变量被回答是检查用户是否已经回答了问题。但是,当我的计时器启动时,它不会检测到来自 onMessageReactionAdd 的任何活动,并且只会在计时器结束后对其做出反应,其中始终会发送“超时”,然后将发送错误/正确选项。我如何同时运行这两种方法或停止一个方法并在条件发生时运行另一个方法。 (请注意,反应是用户的回答)。计时器给出了回答问题的时间限制,如果玩家未能在时间限制内回答,则玩家将错误。有人建议使用新线程,但我还没有掌握 java,需要一些帮助

【问题讨论】:

您可以使用以下任何一种:-Use an EventWaiter-***.com/questions/54491660/… 【参考方案1】:

You could use either an eventwaiter, or create a response based on a state-machine (Credits to Minn for posthing this)

根据您的用例,这将取决于您将如何使用它。

【讨论】:

以上是关于如何在触发条件时退出一个方法并运行另一个方法,JDA 不和谐包装器的主要内容,如果未能解决你的问题,请参考以下文章

Socket connectUser在swift中被多次触发

当另一个 python 脚本正在运行时,如何停止我的 python 脚本?

c#如何使用委托 触发另一个窗体的按钮刷新另一窗体

单击时如何使href链接触发C#方法

如何在 kivy 应用程序退出时运行方法

assert_断言使用方法