Skip to content

xfnty/osubot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

osubot is a minimal Osu! IRC bot that creates and manages a single multiplayer room.

It is packaged as a single executable file that doesn't require any other software to be installed, like NodeJS or .NET runtime.

The bot creates a room named owner's room and invites the owner into it.

If the bot suddenly exits, check crash.txt and restart it so it would rejoin the lobby. After that you will have to define the queue by hand using !q names.... Otherwise host rotation will be disabled.

Commands

The bot supports most of the commands players would expect it to and a few others related to its settings.

Command Description Access
!q [names...] Prints the host queue or defines it if executed by the owner. Anyone
!tl, !timeleft Prints estimated time left until the end of the match. Anyone
!m, !mirrors Prints links to download mirrors for the current beatmap. Anyone
!b, !pb Show user's personal best score on the current beatmap. Anyone
!as, !autoskip Toggle autoskip. Anyone
!s, !skip Transfers host to the next player in the queue. Host, Owner
!hr [on/off] Enable/disable host rotation or prints its status. Owner
!dc [on/off] Enable/disable difficulty constraint or prints its status. Owner
!dcr [min max] Defines difficulty constraint range or prints it out. Owner
!pq [on/off] Enable/disable printing queue after each song or show its status. Owner

The names in !q command are approximations if players' nicknames written as one or many of their first letters in lowercase. If username contains whitespace, use double quotes: "a player". Players not in the names list will be added to the end of the queue in random order. For example, !q mr m will match mrekk and milosz making mrekk the host if he isn't already.

Difficulty constraint will not work until a beatmap that matches the constraint range is selected.

If you need to start a match after a delay or abort the countdown, use the standard !mp start <delay> and !mp abort commands.

If you want me to add more commands, send me an email or open an issue. Also pull requests are always welcome).

Setting Up

The bot doesn't require much setup except saving player's Osu! Web and IRC API credentials into config.json file. To get those credentials, go to Profile Settings and create a new IRC password and OAuth application (callback URL can be empty). Then simply run the .exe and enter them.

The config.json file has the following structure:

{
    "irc": {
        "address": "irc.ppy.sh:6667",
        "username": "username",
        "password": "01234567",
        "rate_limit": 4
    },
    "api": {
        "address": "https://osu.ppy.sh",
        "id": "12345",
        "secret": "abcd1234"
    },
    "host_rotation": {
        "enabled": true,
        "print_queue": false
    },
    "diffuclty_constraint": {
        "enabled": false,
        "range": [0, 10]
    }
}

host_rotation.print_queue flag will make the bot print the host queue every time the match finishes.

About

A quiet osu! AHR lobby bot in a single .exe

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages