NOTE: Development has been stalled because of the fact that the next big QL update will give us dedicated servers with a proper official API to administer servers. That means we'll be able to run servers and bots without having to have the overhead of a client. That said, I'm currently working on a new bot for said update, so hopefully I'll have a new bot ready for when the update hits.
An administration bot for Quake Live, extensible with plugins.
This is the source of the DLL. When you compile this for release, it'll add the base of the Python
files as a resource and load them from there. When compiled for debug, it'll look for them in
python
folder, relative to quakelive.exe
.
The plugins for the bot can be found on a separate repository, https://github.com/MinoMino/minqlbot-plugins
Need help with the bot? Drop by #minqlbot on Quakenet or open an issue here.
NOTE: The following instructions are for the standalone client. If you're using Steam, the QL executable is called "quakelive_steam.exe" and its installation path is not AppData, but wherever you've set Steam to install games. Other than that, it should work just fine with the Steam version as well.
minqlbot.zip
and minqlbot_dependencies.zip
from here (developers might want to get the debug build).minqlbot_dependencies.zip
in the same folder, then make these files read-only. Make a folder called "python" in the same folder. It should look more or less like this: Nickname
field to whatever your account name on Quake Live is. You can go ahead and edit some other options as well, but it might be better to wait until you got the bot running correctly first, just in case you mess something up. Some plugins, such as the IRC plugin are deactivated by default. If you want them, you can add them to the plugin list in the config.minqlbot.zip
anywhere (if you decide to put these with quakelive.exe too, make sure they're read-only as well).minqlbot.dll
under "Module", and write quakelive.exe
under "Target process name", then click "Inject". Like in the following screenshot:DebugView should now start showing you lines with stuff prefixed with "MINQLBOT:". If everything goes well, you'll have something like the image below. However, if the injector for some reason fails to inject, you've most likely failed to put the DLLs you downloaded in the correct folder or downloaded an incorrect version of Python or the VC++ redistributable package. You can use Dependency Walker to figure out what's missing (make sure you get the x86 version here as well).
If you had no issues in the previous steps, you're good to go. You can connect to a server, and as long as you have owner or referee status, you're good. Look at the command list for further info on how to use the bot. If you want to make your buddies able to control the bot, use !setperm. As of February 8, 2015, the command list has all the commands, but has little to no info on the various commands, but I'll work on that. When you're done, make sure you type \bot exit
in your console before closing Quake Live to ensure the bot exits safely.
I'm happy to announce that I've addressed all the major issues I had with the old minqlbot, and most issues I have with this one are quite minor:
Py_Finalize()
is a pain in the ass and leads to crashes and weird bugs, so I don't use it until you unload the module. I've added a restart command to the console, but it just reloads the script from the hard drive and runs it in
the same namespace after calling the cleanup functions. Can probably improve that further, though.\bot exit
in the console before shutting down. This ensures the bot cleans up properly before exiting.\reconnect
in the console to get stuck in the loading screen. This is likely related to the outgoing message queue system I use on the bot. I'll look into it, but it's such a minor issue that it might take a while until this is fixed.Some of the events are not implemented yet! This is still in an early stage.
If you'd like to contribute with code, you can fork this or the plugin repository and create pull requests for changes. The release page also has debug builds of the bot. The debug version is a lot more verbose and will also look for minqlbot.py
and plugin.py
in the python
folder instead of using the ones built in the DLL. This will allow you to use \bot restart
to reload these files instead of having to recompile the DLL all the time.
If you found a bug, please open an issue here on Github.