Jump to content

Ability to interact/start and stop scripts on the client from a different program


JavaMadness

Recommended Posts

I would like to make a program that has the ability to send a request to the osbot client to stop its current script and start a new one. I just want to build a custom script manager.

 

Is this something osbot supports? Could not find anything. I see that there is the script queue and the osbot manager, but I want to be able to write some custom code in my own program.

Link to comment
Share on other sites

12 hours ago, JavaMadness said:

I would like to make a program that has the ability to send a request to the osbot client to stop its current script and start a new one. I just want to build a custom script manager.

 

Is this something osbot supports? Could not find anything. I see that there is the script queue and the osbot manager, but I want to be able to write some custom code in my own program.

I accomplished this with a little bit of help from my assistant, ChatGPT. Here is a java program that will launch a jar using only the java.io package.

import java.io.*;

class JarLauncher {
    public static void main(String[] args) {
        Process jarProcess = null;

        try {
            // Define the directory path without the JAR file name
            String directoryPath = "FILE_PATH_TO_YOUR_OSBOT.JAR_FILE";

            // Set the working directory to the correct directory and launch the osbot.jar jar file (rename if needed)
            ProcessBuilder processBuilder = new ProcessBuilder("java", "-jar", "osbot.jar",
                    "-login", "osbot_username:osbot_password",
                    "-bot", "account_name:account_password:0000",
                    "-script", "Extra House Favour:hosidius_1"
            );
            processBuilder.directory(new File(directoryPath));

            // Start the process
            jarProcess = processBuilder.start();

            // Capture the process output for logging
            BufferedReader reader = new BufferedReader(new InputStreamReader(jarProcess.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            // Count the seconds
            int seconds = 0;

            // Run the Java program for 3 seconds
            while (seconds < 3) {
                // Wait for 1 second
                Thread.sleep(1000);

                seconds++;
                System.out.println("Running for " + seconds + " seconds.");
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        } finally {
            if (jarProcess != null) {
                try {
                    // Terminate the JAR process
                    jarProcess.destroy();
                    int exitCode = jarProcess.waitFor();
                    System.out.println("JAR process exited with code: " + exitCode);

                    // Optionally, use taskkill to forcefully terminate the JAR process
                    String os = System.getProperty("os.name").toLowerCase();
                    if (os.contains("win")) {
                        Runtime.getRuntime().exec("taskkill /F /IM java.exe");
                    }
                } catch (IOException | InterruptedException e) {
                    e.printStackTrace();
                }
            }

            // Exit the Java application when done
            System.exit(0);
        }
    }
}
Link to comment
Share on other sites

5 hours ago, ExtraBotz said:

I accomplished this with a little bit of help from my assistant, ChatGPT. Here is a java program that will launch a jar using only the java.io package.

 

Thanks! It looks like this is only to read the logs, and to control the exit of the program. I am looking more for controlling the script running without exiting the program.

Link to comment
Share on other sites

3 hours ago, JavaMadness said:

Thanks! It looks like this is only to read the logs, and to control the exit of the program. I am looking more for controlling the script running without exiting the program.

This is a work around because what you want isn't offered by the OSBot API. You can modify the method to be used repeatedly then run infinite instances through cli to launch any script. Theoretically you could just create a script and implement the same code that launches other instances of OSBot. This could be done on the same account.

Depending on what you want to do it sounds like you may be better off using CLI in your scripts and adding them to the bot manager. For example if the argument is "1" you would do task 1 until exit. On exit the bot manager would run the next task based on CLI arguments so you can go from task 1 -> 2 -> ...

You can learn more here (this tutorial was written before bot manager existed): 

 

Link to comment
Share on other sites

On 10/23/2023 at 9:26 PM, ExtraBotz said:

Depending on what you want to do it sounds like you may be better off using CLI in your scripts and adding them to the bot manager. For example if the argument is "1" you would do task 1 until exit. On exit the bot manager would run the next task based on CLI arguments so you can go from task 1 -> 2 -> ...

Yes I am using the old explv osbot manager and that is what it does. I was also thinking about having a script that does this two way communication through the file system or through a server. 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...