Hata codejam

Prize: 21 Discord nitro, VPS, database hosting, role, coins

Host: HuyaneMatsu, Braindead, Ryuga

Begins: Nov. 5, 2020
Ends: Nov. 17, 2020

Hata codejam

Team Challenge

Bot interactions & Cross guild features

Event theme

Bot interactions & Cross guild features

Chose any of the 2 or mix them together. How and what will you think of is entirely left to you. Hint: If you're confused about the first, Hata can have multiple clients running at the same time.

Event technology

Codejam will be coded in Python, implementations: PyPy, CPython, versions: 3.6, 3.7, 3.8 (pick any of those) using Hata library as the selected technology github.com/HuyaneMatsu/hata

Hata is an async Discord API wrapper written in Python named after Hata no Kokoro.

Prize pool:

  1. place (each member)

    • Guaranteed* 4 months full Discord Nitro
    • Special role Event Winner in Tortoise Server
    • VPS 1 core 1gb each for 3 months
    • 2GB database for 1 year
    • 24000 Koishi currency*
  2. place (each member)

    • 2 months full Discord Nitro
    • 12000 Koishi currency*
  3. place (each member)

    • 1 month full Discord Nitro
    • 6000 Koishi currency*

*Guaranteed mean that this is the minimum number of Nitros you will get. For example if it happens that 2. or 3. team has 2 members instead of 3 then those extra Nitros will go to 1.st place prize pool so they will have even more.

*Koishi currency is usable in Neko Dungeon guild

Event host

Tortoise Server will be the main in hosting and organizing event, in partnership with Neko Dungeon.

Neko Dungeon is the official support server for the Hata library

Event organizers

You can find us in any of the 2 host servers, we are:

  • HuyaneMatsu#2016
  • BrainDead#6105
  • RyĆ«ga#0001

If you have any questions ping us specifically or by pinging the role @Event Organizator, although try not to spam.


Times are in UTC-0 24h hour format, start date means 00:01am while end date means by 23:59pm that day.

  • Qualifier: October 21th - Nov 3rd
  • Team organization: November 4st
  • Codejam duration: November 5th - 17th
  • Deciding winners: November 18th - 20th

Qualifier: Oct21 - Nov 3

Qualifier is currently closed.

For any questions/problems/suggestion with the scripts feel free to ask @Event Organizator

Depending on how good you solve the qualifier you will be classed into one of these groups: beginner / intermediate / advanced.

Later when we're making teams we will try to make them balanced based on your qualifier class.

Running qualifier tests

How to setup the scripts is explained in the top of the testing script but will be repeated here too.

Your project structure should optimally look like this:


where nya.py is the qualifier script and test_nya.py is the testing script. Now to run tests you can either run test_nya.py directly, same as you would run any Python script or you can use terminal: cd into qualifier folder and run the following command: python -m unittest discover

Submitting qualifier

To submit the qualifier you need to DM our bot @Tortoise#9435 and you will be presented with a message on which you can react. React to the message with Event submission emoji and follow instructions.

If you have any problems with the procedure please ping event organizer role @Event Organizator.

Note: You can submit multiple times but only your last submission will be counted!

Note: As stated below in Team organization you can express your preference for your teammates, but we might or might not accept it. To do so just add a docstring at the beginning of the qualifier stating Discord username and tag of the member you want to be teamed with, example """I want to be teamed with BrainDead#6105 if possible."" , only requirement is that the member will participating in the codejam of course.

Qualifier ratings

As previously stated, depending on how good you solve the qualifier you will be classed as beginner / intermediate / advanced.

You should just try to code it the best you can, without help from other members.

Googling for documentation/Python help is good but asking for solutions is not.

As to what is exactly rated we will only reveal that you should "do it how you feel is the best", as long as it passes tests. You should stick to PEP8 but not all of it is strictly enforced, just keep it consistent if you deviate from it. It should be readable and logical.

  • note that we allow max of 119 chars per line

Do not code-golf (like adding a bunch of code functionality into one line which is often unreadable).


If you want to advertise you can but WITH PERMISSION, do not go in servers and randomly post our event/invite.

Talk about it first and ask about permission. We do not condone any kind of spam.

Team organization: November 4:

By the @Event Organizator depending on member qualifiers.

We will take this time to review qualifiers and form fair teams.

Members can also express their preference if they want to work in a team with some specific member but ultimately we will decide that.

Team list:

Qualifiers have ended and we have decided these teams:

Team Coconut

  • Zeref Draganeel#9897
  • Crambor#4137
  • TheAnonyMouse1337#0331

Team Azuki

  • effyn#5748
  • fwiz#3435
  • chunchunmaru#8570

Team Maple

  • Rascal_Two#5386
  • densoload#7718
  • souru-chan#6057

Team Cinnamon

  • Quanta#8608
  • sleep-cult#3040

Team Vanilla

  • Pluriscient#2451
  • Jerry#6727
  • Average fish$8548

Title of leader should not get to your head, treat all member with respect and have patience with inexperienced ones. Leaders are people we think are the most experienced in that team (mostly based on qualifier) and aside from regular participant chat they will have access to private team leader chat.

Leaders also have Web-hook permissions for their channels so if they want to link Github repo to their channel they can (to receive info such as new commits, new forks, deletion of forks etc) You can read instructions on how to here: https://gist.github.com/eslachance/40ac1c8232a5a019b43ee3f588d637ad

We tried to make the teams as balanced as possible based on qualifiers.

Each team will have access to their own private channel in Tortoise Guild, you are not forced to use them tho. It is fine to create your own server or whatever you wish. For any members that are responding please report them to @Event Organizator so we can act.

Codejam: November 5th-17th

By this point you should be already teamed up with other members by @Event Organizator.

For first day our recommendation is to try to take it easy and just try to see if all team members are still going to participate (there might be cases where some members drop out). If you have problems with team members not responding ping event organizators and we will try to move the teams around.

Also you can see who knows what and from which country they are so you know the timezones, get to know each other.

It is also not uncommon to spend first few days just on discussion of idea that suits the theme.

Codejam theme

See the top of the page.

Codejam rating rules

To get you approximate idea on what we rate on how will your submissions be scored we've made the following table:

  • Clean code: (25%)
    • Code style and standards (readability, docstrings, is it logical etc)
    • note that we allow max of 119 chars per line, not the default 80 as per PEP
    • PEP8 in its whole is not strictly enforced, but if you pick one way to do it then stick to it - consistency is the key.
  • Idea: (40%)
    • How original the idea is, how well it sticks to the theme and how much we like it.
  • Functionality: (35%)
    • Whether the bot features work as intended, are there any bugs.
    • If there is a wrapper feature for something, use it instead of trying to implement it yourself (aka don't reinvent the wheel)
    • Bad approaches such as: Blocking code in async, bloat code, unnecessary lines etc

Codejam submissions

You will fork our repo: hata-code-jam

There is a readme there explaining the process but basically:

Make a fork of our repo, there will be 5 folders for each team so work only inside your own folder.

Commit and push code to your repo and whenever you want create a PR to our repo.

Codejam notes

  • If you use static ID-s, please have them as constants in one file and each having a comment about what it is for, if they are not already self-explanatory. This will help us set up environment to test out your submission more easily.

  • Please note the minimum required python version of the project, if you are using 3.6+ features.

  • We will test the bot OURSELVES, you just give us the code (without token, without invites etc) but try to make it easier for us to set it up (as in first point having all hardcoded IDs in one place so we can change them, or preferably having a guide in your readme how to set it up.) Marked that one as it's quite important, if we're having trouble setting it up your points are going down :P


Code Jam is finished and these are the winners:

1.: Team Maple @Rascal_Two#5386 @vinam#6057

2.: Team Coconut @Zeref Draganeel#9897 @Crambor#4137 @TheAnonyMouse1337#0331

3.: Team Cinnamon @sleep-cult#3040

*Not all team members are getting prizes because some members did not participate enough (or at all) to warrant them.

And for the end: Big thanks to @Event Organizator especially @HuyaneMatsu#2016 for writing the lib and doing many updates for it and for her big help in answering any questions regarding the lib (also for nice prizes :D ). Big thanks to all @Code Jam Participants and shoutout to our VPS sponsor https://cynderhost.com/ for sponsoring VPS for the winners!