Results 1 to 10 of 10
  1. #1
    TheDarkLord666's Avatar
    Join Date
    May 2024
    Gender
    male
    Posts
    3
    Reputation
    10
    Thanks
    0

    Question Looking for a guild maintenance bot

    I'm the leader of a sizeable guild on AQW. Up until recently, we used to have a bot on discord that would be registered on a throwaway account and monitor the guild chat as well as keep track of who leaves and joins.

    Recently our bot accounts have been getting disabled within 24 hours of creation. Either AE has caught wind of it, or the bot creator has stopped patching it so it can't bypass AE's detection anymore. I need a bot to replace it with similar features, because it's been really convenient to help maintain the guild. Even better if it can maintain more than one account per discord server so that we can also use it on our branches.

    Please give me some suggestions.

  2. #2
    NoobFloob's Avatar
    Join Date
    May 2019
    Gender
    male
    Location
    In my house
    Posts
    219
    Reputation
    10
    Thanks
    1,384
    I doubt that anyone would be willing (including me) to make that for free. You have to talk to someone, like... pay them to do that. But the program seems nice though, especially if it was done without using any flash-based technology like this.
    Want to support me financially and/or keep me motivated on my projects? Go buy me a coffee! Any donations will be extremely appreciated!
     
    Discord: floobyy.

  3. #3
    TheDarkLord666's Avatar
    Join Date
    May 2024
    Gender
    male
    Posts
    3
    Reputation
    10
    Thanks
    0
    Quote Originally Posted by NoobFloob View Post
    I doubt that anyone would be willing (including me) to make that for free. You have to talk to someone, like... pay them to do that. But the program seems nice though, especially if it was done without using any flash-based technology like this.
    Oh I'm not hoping for one made from scratch for free. I'm just wondering if there's an existing bot that you can direct me towards with similar features to the ones I described.

  4. #4
    NoobFloob's Avatar
    Join Date
    May 2019
    Gender
    male
    Location
    In my house
    Posts
    219
    Reputation
    10
    Thanks
    1,384
    Quote Originally Posted by TheDarkLord666 View Post
    I'm just wondering if there's an existing bot that you can direct me towards with similar features to the ones I described.
    From what I know, bots that are similar to the ones you described does not exist, at least not publicly. Someone might have made that for a similar agenda but was not released because they have no reason to release it publicly.
    Want to support me financially and/or keep me motivated on my projects? Go buy me a coffee! Any donations will be extremely appreciated!
     
    Discord: floobyy.

  5. #5
    IfOnlyYouKnew's Avatar
    Join Date
    Feb 2021
    Gender
    male
    Location
    Just me, my PC and my idiocy
    Posts
    505
    Reputation
    197
    Thanks
    3,549
    My Mood
    Angelic
    Sounds like fun, I have current limitations preventing me from accessing certain hardware of mine. This is where most of my tools sit. I will likely target doing this on HTML/JS/Discord if I do for now. Seeing as Windows has the subsystem should be fine.
    I do not have access to Visual Studio at the time being. So most of my projects are on hold. (Maybe a few months before I return to actively developing)

    Now monthly updates/etc. I agree with Floob not many will do this without pay.

    To make sure I get the gist, you want this account to login and be able to maintain guild chat talk to discord? Do you also seek be able to send guild messages from discord as that is much more work than just being able to keep track of guild chat one way.
    Contributor: March 14'th, Minionforce: March 15'th, Minion Plus: May 30'th, Former Staff: September 9'th, 2023

    Coding Hobbyist | - Current Activity | BattleOn | RotMG |


    Want to make my life better? <3 BTC: 3JoQRjwK28DVGTzL4mYkpjHRBeoFwNFVe7

  6. #6
    TheDarkLord666's Avatar
    Join Date
    May 2024
    Gender
    male
    Posts
    3
    Reputation
    10
    Thanks
    0
    Quote Originally Posted by IfOnlyYouKnew View Post
    Sounds like fun, I have current limitations preventing me from accessing certain hardware of mine. This is where most of my tools sit. I will likely target doing this on HTML/JS/Discord if I do for now. Seeing as Windows has the subsystem should be fine.
    I do not have access to Visual Studio at the time being. So most of my projects are on hold. (Maybe a few months before I return to actively developing)

    Now monthly updates/etc. I agree with Floob not many will do this without pay.

    To make sure I get the gist, you want this account to login and be able to maintain guild chat talk to discord? Do you also seek be able to send guild messages from discord as that is much more work than just being able to keep track of guild chat one way.
    Well, the old bot we used used to login a throwaway account via discord and have the function to keep track of the guild chat and joins/leaves, while also being able to send messages to the guild chat via discord.

    Again, I don't want to impose on the people here, so please don't go out of your way to make one for me if it'll be too much of an inconvenience. I'm just trying to see if anyone knows of a bot with such functionality to replace the one we used to have, or alternatively help me figure out a safeguard to ensure our throwaways aren't banned so quickly with our existing bot.

    Edit: Meanwhile I'm still looking around elsewhere as well, reaching out to former guild connections to see if they have any ideas. It's a bit of a shot in the dark right now. I'm not so desperate for this bot, but it was a great convenience to have on hand. It can be a bit difficult to maintain a guild of our size without the help of such resources.
    Last edited by TheDarkLord666; 06-03-2024 at 10:05 AM. Reason: Edited for further elaboration

  7. #7
    NoobFloob's Avatar
    Join Date
    May 2019
    Gender
    male
    Location
    In my house
    Posts
    219
    Reputation
    10
    Thanks
    1,384
    Quote Originally Posted by TheDarkLord666 View Post
    don't go out of your way to make one for me if it'll be too much of an inconvenience.
    I don't think anyone would be inconvenienced especially when they are paid to do that.

    Quote Originally Posted by TheDarkLord666 View Post
    help me figure out a safeguard to ensure our throwaways aren't banned so quickly with our existing bot.
    If you don't have any access to the source code of the bot or have no idea how to "patch" that (in case that you have the source code), then you can't safeguard it. IMO, it gets detected easily due to the suspicious packets being sent to the game. The packets sent to the server might be different from the original packets generated by the original AQW client, causing a flag to the server and getting your throwaway account disabled.
    Want to support me financially and/or keep me motivated on my projects? Go buy me a coffee! Any donations will be extremely appreciated!
     
    Discord: floobyy.

  8. #8
    IfOnlyYouKnew's Avatar
    Join Date
    Feb 2021
    Gender
    male
    Location
    Just me, my PC and my idiocy
    Posts
    505
    Reputation
    197
    Thanks
    3,549
    My Mood
    Angelic
    We're you using AQWConnect? Seems to be the one that appears when searching on google.


    Shouldn't need constant updates (at least for a bit) from us devs if we link it to a cefSharp browser/Similar, Use ExternalCalls to the browser, implement java to react and create a custom debug made only for grabbing the guild chat. Just that at the very least should allow you to once again get guildchat in Discord from AQW. Sending messages from discord is another ballparks work. Also I'm almost certain NoobFloob could get it done for you. I actually cannot manage this at the moment. So unless you are willing to wait literal months for my life to change it's a no from me, Sorry. If and when I have the availability I will look into and attempt it if Floob has not.
    Contributor: March 14'th, Minionforce: March 15'th, Minion Plus: May 30'th, Former Staff: September 9'th, 2023

    Coding Hobbyist | - Current Activity | BattleOn | RotMG |


    Want to make my life better? <3 BTC: 3JoQRjwK28DVGTzL4mYkpjHRBeoFwNFVe7

  9. #9
    NoobFloob's Avatar
    Join Date
    May 2019
    Gender
    male
    Location
    In my house
    Posts
    219
    Reputation
    10
    Thanks
    1,384
    Quote Originally Posted by IfOnlyYouKnew View Post
    We're you using AQWConnect?
    Now that I know this exists, patching it would be quite easy.

    Steps:
    1. Head over to the '<AQWConnect Directory>/resources/app'
    2. Click 'main.js' and run it with notepad or any text editor
    3. Copy the javascript code below
    4. Paste the copied code onto the main.js file and save
    5. Run

     
    Code:
    const { app, BrowserWindow, Menu, session } = require("electron");
    const path = require("path");
    require("./modules/Flash");
    const { ipcMain } = require("electron");
    const Discord = require("./modules/Discord");
    const AQMessage = require("./modules/AQMessage");
    const { fs } = require("fs");
    
    let mainWindow;
    function createWindow() {
        mainWindow = new BrowserWindow({
            width: 960,
            height: 580,
            webPreferences: {
                plugins: true,
                nodeIntegration: true,
                enableRemoteModule: true,
            },
            frame: true,
        });
        mainWindow.setMenu(null);
        mainWindow.setIcon(path.join(__dirname, 'public', "Logo256.png"));
        mainWindow.webContents.on("new-window", newWindow);
        mainWindow.loadFile(path.join(__dirname, "public", "index.html"));
    
        require("./modules/app");
    }
    
    app.disableHardwareAcceleration(); 
    app.on("ready", createWindow);
    app.on("window-all-closed", () => {
        try {
            require('fs').unlinkSync(path.join(__dirname, "Console.log"));
        }
        catch { }
        app.quit();
    });
    
    
    /* IPC SECTION */
    ipcMain.on("packet", (event, packet) => {
    	//console.log(packet);
        if (Discord.IsLogging && (packet.includes("%xt%chat") || packet.includes("%xt%whisper"))) {
            var Message = packet.split("%")[4];
            var Sender = packet.split("%")[5];
            if (packet.includes("%xt%whisper")) {
                Discord.SendDiscordMessage(packet, Sender, true);
                return;
            }
            Discord.SendDiscordMessage(Message, Sender);
        }
    });
    ipcMain.on("discord-start", (event, args) => {
        if (args[1] == true)
            Discord.Initiate(args[0], args[1]);
        else Discord.DestroyClient();
    });
    ipcMain.on("discord-isEnabled", (event) => {
        event.returnValue = Discord.IsLogging;
    });
    
    var LoginServer = "Artix";
    var AutoRelog = false;
    ipcMain.on("set-login-server", (event, server) => {
        LoginServer = server;
    })
    ipcMain.on("get-login-server", (event) => {
        event.returnValue = LoginServer;
    })
    ipcMain.on("login", (event) => {
        mainWindow.webContents.send("Login");
    })
    ipcMain.on("join", (event, server) => {
        mainWindow.webContents.send("Connect", server);
    })
    ipcMain.on("set-autoRelog", (event, state) => {
        AutoRelog = state;
    });
    ipcMain.on("get-autoRelog", (event) => {
        event.returnValue = AutoRelog;
    });
    ipcMain.on("disconnect-called", (event) => {
        if (AutoRelog)
        {
            setTimeout(() => {
                mainWindow.webContents.send("Login");
            }, 2000);
            setTimeout(() => {
                mainWindow.webContents.send("Connect", LoginServer);
            }, 5000);
        }
    });
    
    app.once('ready', () => {
        session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
            details.requestHeaders['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ArtixGameLauncher/2.1.2 Chrome/80.0.3987.163 Electron/8.5.5 Safari/537.36";
            details.requestHeaders['artixmode'] = 'launcher';
            callback({ cancel: false, requestHeaders: details.requestHeaders });
        });
    });
    
    /* FUNCTIONS */
    function newWindow(event, url, frameName, disposition, options, additionalFeatures, referrer, postBody) { //Catched "new-window" event
    	//Modify the popup window for character page to disable node integration (Needed for JQuery to work)
        event.preventDefault();
        const win = new BrowserWindow({
            webContents: options.webContents, // use existing webContents if provided
            show: true,
            webPreferences: {
                plugins: true
            }
        });
        win.setMenu(null);
        win.loadURL(url)
    }


    This 'patch' essentially makes the application a legitimate Artix Game Launcher which in theory reduces the risk of getting your throwaway account getting disabled easily.

    @TheDarkLord666
    Want to support me financially and/or keep me motivated on my projects? Go buy me a coffee! Any donations will be extremely appreciated!
     
    Discord: floobyy.

  10. The Following User Says Thank You to NoobFloob For This Useful Post:

    IfOnlyYouKnew (06-12-2024)

  11. #10
    lurifaxen's Avatar
    Join Date
    May 2024
    Gender
    male
    Posts
    5
    Reputation
    10
    Thanks
    2
    Quote Originally Posted by NoobFloob View Post
    Now that I know this exists, patching it would be quite easy.

    Steps:
    1. Head over to the '<AQWConnect Directory>/resources/app'
    2. Click 'main.js' and run it with notepad or any text editor
    3. Copy the javascript code below
    4. Paste the copied code onto the main.js file and save
    5. Run

     
    Code:
    const { app, BrowserWindow, Menu, session } = require("electron");
    const path = require("path");
    require("./modules/Flash");
    const { ipcMain } = require("electron");
    const Discord = require("./modules/Discord");
    const AQMessage = require("./modules/AQMessage");
    const { fs } = require("fs");
    
    let mainWindow;
    function createWindow() {
        mainWindow = new BrowserWindow({
            width: 960,
            height: 580,
            webPreferences: {
                plugins: true,
                nodeIntegration: true,
                enableRemoteModule: true,
            },
            frame: true,
        });
        mainWindow.setMenu(null);
        mainWindow.setIcon(path.join(__dirname, 'public', "Logo256.png"));
        mainWindow.webContents.on("new-window", newWindow);
        mainWindow.loadFile(path.join(__dirname, "public", "index.html"));
    
        require("./modules/app");
    }
    
    app.disableHardwareAcceleration(); 
    app.on("ready", createWindow);
    app.on("window-all-closed", () => {
        try {
            require('fs').unlinkSync(path.join(__dirname, "Console.log"));
        }
        catch { }
        app.quit();
    });
    
    
    /* IPC SECTION */
    ipcMain.on("packet", (event, packet) => {
    	//console.log(packet);
        if (Discord.IsLogging && (packet.includes("%xt%chat") || packet.includes("%xt%whisper"))) {
            var Message = packet.split("%")[4];
            var Sender = packet.split("%")[5];
            if (packet.includes("%xt%whisper")) {
                Discord.SendDiscordMessage(packet, Sender, true);
                return;
            }
            Discord.SendDiscordMessage(Message, Sender);
        }
    });
    ipcMain.on("discord-start", (event, args) => {
        if (args[1] == true)
            Discord.Initiate(args[0], args[1]);
        else Discord.DestroyClient();
    });
    ipcMain.on("discord-isEnabled", (event) => {
        event.returnValue = Discord.IsLogging;
    });
    
    var LoginServer = "Artix";
    var AutoRelog = false;
    ipcMain.on("set-login-server", (event, server) => {
        LoginServer = server;
    })
    ipcMain.on("get-login-server", (event) => {
        event.returnValue = LoginServer;
    })
    ipcMain.on("login", (event) => {
        mainWindow.webContents.send("Login");
    })
    ipcMain.on("join", (event, server) => {
        mainWindow.webContents.send("Connect", server);
    })
    ipcMain.on("set-autoRelog", (event, state) => {
        AutoRelog = state;
    });
    ipcMain.on("get-autoRelog", (event) => {
        event.returnValue = AutoRelog;
    });
    ipcMain.on("disconnect-called", (event) => {
        if (AutoRelog)
        {
            setTimeout(() => {
                mainWindow.webContents.send("Login");
            }, 2000);
            setTimeout(() => {
                mainWindow.webContents.send("Connect", LoginServer);
            }, 5000);
        }
    });
    
    app.once('ready', () => {
        session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => {
            details.requestHeaders['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ArtixGameLauncher/2.1.2 Chrome/80.0.3987.163 Electron/8.5.5 Safari/537.36";
            details.requestHeaders['artixmode'] = 'launcher';
            callback({ cancel: false, requestHeaders: details.requestHeaders });
        });
    });
    
    /* FUNCTIONS */
    function newWindow(event, url, frameName, disposition, options, additionalFeatures, referrer, postBody) { //Catched "new-window" event
    	//Modify the popup window for character page to disable node integration (Needed for JQuery to work)
        event.preventDefault();
        const win = new BrowserWindow({
            webContents: options.webContents, // use existing webContents if provided
            show: true,
            webPreferences: {
                plugins: true
            }
        });
        win.setMenu(null);
        win.loadURL(url)
    }


    This 'patch' essentially makes the application a legitimate Artix Game Launcher which in theory reduces the risk of getting your throwaway account getting disabled easily.

    @TheDarkLord666
    Allow me to pitch in: when I release flashdevtools, you can use it to do this from the official game launcher, which in theory even further reduces the risk of getting your account disabled.

    On topic, this sounds like an interesting project. I'm currently busy with FDT, but after its initial release I might look into developing a guild maintenance bot.

Similar Threads

  1. [WTB] Looking for a youtube view bot
    By shawdey in forum User Services
    Replies: 1
    Last Post: 03-15-2013, 07:11 AM
  2. Looking for a guild!!!
    By pizazzle in forum Realm of the Mad God Discussions
    Replies: 3
    Last Post: 01-19-2013, 06:08 PM
  3. Looking for an Allods online bot
    By DisTruKt in forum Suggestions, Requests & General Help
    Replies: 0
    Last Post: 12-28-2012, 06:24 AM
  4. Looking for a Guild
    By FaLLii in forum Vindictus Discussions
    Replies: 6
    Last Post: 07-19-2012, 08:45 PM