如何保持运行状态?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何保持运行状态?相关的知识,希望对你有一定的参考价值。

因此,我正在尝试为Java中的不和谐对象构建一个bot,但是每当命令执行两次,它第二次将无法正常工作。我知道一定有微小的错误,或者我做错了什么。例如:输入!spotify时,仅在第一次加载bot并再次键入任何!spotify!minecraft!origin时才执行该操作。没有任何反应,也没有错误。

public class FileEvent extends ListenerAdapter 

public void onGuildMessageReceived(GuildMessageReceivedEvent event) 



    /*All the paths are here*/
    String SPOTIFY_PATH = "enter path here";
    String MINECRAFT_PATH = "enter path here";
    String ORIGIN_PATH = "enter path here";

    /*All the file objects are here*/
    File Minecraft = new File(MINECRAFT_PATH);
    File Spotify = new File(SPOTIFY_PATH);
    File Origin = new File(ORIGIN_PATH);

    String message = event.getMessage().getContentRaw();

    if (message.equalsIgnoreCase("!spotify")) 
        Scanner ss = null;
        try 
            ss = new Scanner(Spotify);
         catch (FileNotFoundException e) 
            e.printStackTrace();
        
        String data_spotify = ss.nextLine().trim();

        event.getAuthor().openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessage("sup")).queue();
        ss.close();

        FileDelete.delete(data_spotify.trim(), SPOTIFY_PATH);
    

    if (message.equalsIgnoreCase("!minecraft")) 
        Scanner sm = null;
        try 
            sm = new Scanner(Minecraft);
         catch (FileNotFoundException e) 
            e.printStackTrace();
        
        String data_minecraft = sm.nextLine().trim();


        event.getAuthor().openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessage("sup")).queue();
        sm.close();

        FileDelete.delete(data_minecraft.trim(), MINECRAFT_PATH);
    

    if (message.equalsIgnoreCase("!origin")) 
        Scanner sn = null;
        try 
            sn = new Scanner(Origin);
         catch (FileNotFoundException e) 
            e.printStackTrace();
        
        String data_origin = sn.nextLine().trim();


        event.getAuthor().openPrivateChannel().flatMap(privateChannel -> privateChannel.sendMessage("sup")).queue();
        sn.close();

        FileDelete.delete(data_origin.trim(), ORIGIN_PATH);
    



答案

老实说,我不知道您的代码哪里出了问题,但是我确定您不应该将很多命令链接在一起。使用JDA-Utilities,可以更轻松地完成整个命令处理。

如果要创建新命令,则应1.创建一个新的Java类2.将新创建的类扩展为Command类的扩展,如下所示:

   public class ExampleCommand extends Command  /* code here */ 
  1. 创建构造函数并为命令设置所需的属性。
  2. 覆盖执行方法:
   @Override
   protected void execute(CommandEvent event)  /* code for the command here */ 
  1. 将命令添加到客户端/ jda。
   client.addCommands(new ExampleCommand());

您可以找到易于阅读和修改的不完整的bot示例(JDA + JDA实用程序)here

以上是关于如何保持运行状态?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Powershell 运行批处理文件然后保持打开状态?

我如何在后台保持我的应用程序处于运行状态

运行程序时保持 iphone 处于活动状态

关闭 SSH 时保持 Django 运行服务器处于活动状态

如何在可可中保持应用程序状态

如何保持多个数据库处于同步状态