Skip to content

Parkour Bot is a Discord bot created using the interactions.py framework for the Minecraft Parkour Central discord server, which is the largest and most active discord server for the technical parkour community. Parkour Bot primarily handles the XP/Point/Levelling system, but also contains some games and other fun and useful features.

License

Notifications You must be signed in to change notification settings

dude-guy-boy/parkour-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Parkour Bot

Discord

NOTE: This version of parkour bot is still in relatively early development, so many of the features listed below have not yet been implemented.

TODO: Add pictures so its not so boring

TODO: Finish writing out the other stuff

Summary

Parkour Bot is a Discord bot created using the interactions.py framework for the Minecraft Parkour Central discord server, which is the largest and most active discord server for the technical parkour community. Parkour Bot primarily handles the XP/Point/Levelling system, but also contains some games and other fun and useful features.

XP/Point System

Parkour Bot's XP system is based on the completion of parkour courses and jumps. The harder a course/jump is, the more XP a user gets. These courses and jumps can be found on multiplayer servers, so that legitimate completion can be verified. When users surpass certain XP thresholds, they gain access to new perks on the discord server.

There are three types of parkour you can do to get XP. These are Endurance, Onejump and Segmented. In all of these types, difficulty ranges from very easy to extremely difficult to cater to players of all skill-levels.

animated

Endurance (also known as Rankup) is a parkour gamemode in which the player will progress through parkour that is part of a larger build. Common themes include scaled up arcades, household rooms, significant real world locations or structures, cities, and landscapes. This gamemode has no checkpoints and often contains so called "life/death" sections of parkour in which the player will lose significant progress if they fall. Endurance maps normally conclude with a "sky" section, which is life/death parkour right before the end of the map, which if failed will sometimes cause the player to fall all the way back to the start of the course.

animated

Onejump is a gamemode in which the player will attempt to land a single jump once. In most cases, the player will have a checkpoint set at specific coordinates at the start of the jump that they will perform a specific strategy from. The mouse movements and keyboard inputs become extremely precise and complex at the more difficult levels of this gamemode, which requires the player to have great consistency and control. The hardest of onejumps are possible by fractions of millimeters.

animated

Segmented courses are much like endurance courses, but they are sectioned into smaller portions using checkpoints. As such, segmented courses rarely contain "life/death" sections. These courses are often built in hallway or tower like structures, but sometimes in builds similar to endurance courses. The style and difficulty of the parkour in segmented courses usually lies somewhere between onejump and endurance.

Economy System

For each XP point a user gains, they also gain one coin (or more?) in the economy system. Coins can then be spent on the server for bounties, cosmetics, perks, etc. Perhaps users will also be able to gain coins through games and the luck system. If this happens, then they should probably gain multiple coins per xp so that fractions of coins can be avoided and smaller rewards can be given for winning games.

Could also get coins for participating in the server, every n messages or x minutes in a voice chat, etc.

This system has not yet been fully thought through, so will likely change a lot.

Make reacting to a message with a coin emoji give the person who sent it 10/100 of your coins?

Also have an economy leaderboard

The current plan:

  • Bounties can be placed on jump / map completions / strat finds
    • #Bounties channel that lists all bounties in embeds. below each is a button to "Add to this bounty" Which brings up a modal where the user can enter a number of coins they want to add to it
    • Maybe allow them to be placed on other unrelated things too?
    • Any user can contribute some of their coins to a bounty, to increase the reward for whoever completes it.
    • Allow custom non-coin bounties? like nitro, irl money, hypixel rank, etc if people want to offer those things
    • Bounties may need to be approved by staff to avoid spam or just bad ones
  • Users can 'purchase' role icons as a cosmetic.
    • they would be able to equip an icon with some command /equip <icon-name>, /unequip
    • This is needed because if they have all roles for the purchased icons simultaneously it would always show the one from the top role.
    • So it would give/take relevant roles when the command is used
  • Maybe they can 'purchase' adding or removing an emoji

Need to think of other cosmetics.

Main Bot Features

Here are the main features of the bot!

Minecraft Account Verification

Parkour bot is run alongside a socket server, which mimicks the data sent and received by real Minecraft servers when a player joins them. When joined, the player is provided with a sentence which is their verification code. Inputting this code into the bot's verification command allows the bot to link a discord user with a minecraft player UUID. Once a user/player is verified, they gain the ability to participate in the XP/Point system.

Unfortunately this system is still flawed and the socket server does not consistently retrieve the players username or UUID, and will simply send an error message upon attempting to join. If you are having trouble with this, ask a staff member to manually verify you.

Auto-Sync

New to this version of Parkour Bot is auto-sync. Auto-sync is a feature which sends HTTP requests to affiliated parkour servers using a RESTful API companion plugin which responds with information about the courses and jumps that players have completed. This means that Parkour Bot can automatically detect when a player has completed a new course / jump, and add it to their completed list.

Parkour Dictionary and FAQ

Parkour Bot features a dictionary and FAQ system. Staff can add parkour terms, their aliases and their definition to the dictionary, which users can then search for. If a term or alias that exists in the dictionary appears in the definition for another term, it is underlined to indicate that they can also check the definition for it.

The FAQ system similarly allows staff to add and remove frequently asked questions that can then be searhed for by anyone, using a slash command.

Leaderboards

Parkour Bot can send leaderboards of users based on their XP/Point score. The leaderboard can also be set to filter for one specific parkour type or one specific server.

There are also leaderboards for each game and the luck system.

Player Profiles

Every user / player has three profiles. Their main profile, which contains information about the maps and jumps they've completed, and their total / divided XP. There's also their luck profile which contains information about their rank, luck points, luck score, their rarest luck and hyperlinks to each of their lucky messages.

Ticket System

The ticket system is primarily for users to claim completion of maps through. However, with auto-sync it will become much less common as users will only need to claim maps that arent on servers compatible with auto sync, or maps that cant be synced properly if a server has not recorded that map as having been completed.

Tickets are also used for staff applications and event submissions.

Games

Parkour Bot contains some games you can play to pass the time.

Minesweeper

With parkour bot you can play a simple 5x5 version of minesweeper. When you start a game it starts with an unknown number of mines and looks like this:

The first tile you choose will never contain a mine. Once you have chosen it the total number of mines will be revealed.

When you lose a game, all unexplored tiles will be revealed in gray, and the explored tiles will appear blue. You can click on the mine that blew you up to start a new game.

When you win a game, the mines you avoided will all appear green, and you can click any of them to start a new game.

The Minesweeper leaderboard is based on the total number of mines avoided. It also shows what each users largest number of avoided mines in a single game was.

2048

With Parkour Bot you can also play 2048. When you start a new game it looks like this:

The four arrow buttons at the bottom let you choose your next move. When two tiles of the same value collide, they combine and form a single tile of their combined value. The goal is to get the largest tile you can. To end the game at any time, press the big red "End Game" button.

Like Minesweeper, there is also a 2048 leaderboard which is ranked based on high score.

45 Strafe

45 Strafing is a popular and well-known parkour technique in the community. In Parkour Bot, it is a luck based game where you try to get a perfect 45.0° strafe.

Other Fun Stuff

Polls

Through Parkour Bot users can create highly customisable polls, which are posted to #polls for everyone to see and answer if they please. Users can create anonymous polls, polls with images, polls with an attached thread and polls with custom emoji reactions.

Emoji polls can also be created which allow users to suggest adding or removing custom emojis to the server. 24 Hours after an emoji poll is sent the bot will check the poll results (yes vs no votes) and add or remove or keep the emoji accordingly.

The Luck System

In the luck system any message can get lucky. All messages sent in the server have at least a 1/1000 chance of getting lucky, and are marked with reactions/responses when they do get lucky. The rarity of luck messages ranges in powers of 10 from one in a thousand to one in a billion.

When a user receives a lucky message, they gain luck points equivalent to the rarity/1000. This is then saved to their luck profile where they can view their previous lucky messages, sorted by rarity. Their luck profile also shows their total messages, number of lucky messages and luckiness index (luck points * 1000 / total messages), and how they rank overall in the server luck leaderboard.

The luck leaderboard can also be viewed to see where everyone places.

Jump Idea Generator

The jump idea generator can be used to come up with parkour jump ideas for you. It does so by choosing a random set of constraints based on the generators configuration. The generator allows you to select the minecraft version you want to generate for, and the types of blocks and mechanics you want to allow.

Spirit Animals

Ask Parkour Bot what your spirit animal is!

Love Calculator

Calculate how much you and another user are in love!

Marriage and Babies

Marry other users, divorce them, try for a baby, the world is your oyster.

Mimicking

(Staff only) Mimick any other user you want to.

Utility Features

Parkour Bot also contains some useful features that arent relevant to parkour.

Todo Lists

Each user has access to their own todo list. They can add tasks to it, remove them, mark them as completed, and view everything they previously completed.

Time Checker

Users can set their timezone in the bot so that other users can check what time it is for them. They can also check what time it is in any timezone.

Administrative Features

Parkour Bot contains several useful administrative features

Event Manager

Parkour bot has an integrated system for managing server events.

Bot Manager

The bot manager allows the bot to restart itself from discord, update itself from github and create regular backups. You can also download copies of backups or logs through the manager.

Logging System

The logging system logs all commands, button presses, errors, and other bot interactions. All logging is saved to log files so they can be checked later to find issues or inappropriate behaviour. Many things are also logged in discord to a configurable logging channel.

Staff Application Handler

Master Config & Data Storage System

Config and data files are handled by TinyDB. A simple interface has been created so that it is easy to get and set config parameters and user data.

Dynamic Help Command

The help command should show users only the commands they have permission to perform.

About

Parkour Bot is a Discord bot created using the interactions.py framework for the Minecraft Parkour Central discord server, which is the largest and most active discord server for the technical parkour community. Parkour Bot primarily handles the XP/Point/Levelling system, but also contains some games and other fun and useful features.

Resources

License

Stars

Watchers

Forks

Languages