-
Notifications
You must be signed in to change notification settings - Fork 0
Primer on Tournie Challonge bot
The goal is to be able to manage the common tasks for Challonge tournaments via Slack, such as reporting scores for matches, etc.
As a next step, I would like to add support for deadlines for each round / match, to facilitate quicker tournaments.
When looking for already existing bots, I found these code repos, both seemingly abandoned and not having the features we want:
- Challonger, written in Node.js
- slackbrack, written in Python
- Claudia Bot Builder as bot framework, deploying as AWS Lambda.
- Jest as testing framework.
- AWS SimpleDB for storage of state. Might switch to DynamoDB later as that SimpleDB isn't developed any more.
User actions
- Link Challonge user ↔ Slack user
- Show open match(es) (all tournaments), including opponent (Slack user + tournament display name), time of “opening”
- Report score on open match
Admin actions
These might be needed, as there’s no way to query a Challonge user the tournament s/he participates in:
-
Link created tournament to Slack (channel?)
-
Unlink tournament from Slack (channel?), or done automatically when tournament has ended?
-
Or, as an alternative approach, just search all open tournaments for a Challonge organization.
Bot state
- Mapping Challonge user ↔ Slack user
- Mapping tournament(s?) ↔ Slack (channel), if not using alternative approach
User actions
- Query deadline for open match(es)
Admin actions
- Set deadlines for rounds
Bot state
- Deadline per tournament and round
User tournament actions
These actions are available in Slack channel with already linked tournament(?s).
- Sign up for tournament (before it is started)
- Leave tournament (before it is started)
- Mark inactive in tournament (when it is in progress)
- List currently open matches (in all tournaments linked to channel)
- Report score on currently open match (when tournament is in progress)
- Set display name for tournament
- Show participants for tournament (Slack user + tournament display name, standings if available)
Also: it would be nice if the above was available in conversation with Slack bot, for all linked tournaments regardless of Slack channel.
Admin actions
- Link created tournament to Slack channel
- Unlink tournament from Slack channel
- Start tournament
- Finalize tournament
Bot actions
- Announce as deadlines approach, ping users of unplayed matches. Can this be done with a AWS lambda?
Bot state
- Mapping tournament(s?) ↔ Slack channel
- Mapping Challonge user ↔ tournament participant (not strictly needed but can give better performance)