TL;DR
I'm developing a personal Telegram bot using TypeScript and the Telegraf library to help my friends and I organize padel matches more easily. A user can set up a match in a chat with the bot, and everyone in the group can view all upcoming matches using the /matches
command. Each match will display its description, time, date, location, and player list, with buttons for signing up or removing oneself from the match. Future features will include match notifications and result tracking.
Introduction
Coordinating padel matches with friends can be challenging, especially when trying to organize teams, confirm attendance, and track availability. To make this easier, I'm developing a personal Telegram bot using TypeScript and the Telegraf library. This bot is intended for personal use among my friends and me, allowing us to streamline the process of organizing matches.
The bot lets a user create matches in a private chat, and then displays all upcoming matches to the group using the /matches
command. Players can sign up or remove themselves from matches using interactive buttons. I'm also planning to implement notifications and a way to track match results to enhance the overall experience.
Development Progress
1. Concept & Planning
The idea for this project came from the need to simplify how my friends and I set up padel matches. The goals are:
- To provide a simple way to schedule matches and notify everyone in the group.
- To offer an easy system for players to manage their participation in upcoming matches.
- To notify players about upcoming matches and allow tracking of match results.
The bot will handle all aspects of match organization, including time, date, and location settings. All of this information is shared within the group chat so that everyone can see the matches, sign up with a single click, and stay informed about upcoming games.
2. Bot Setup with TypeScript & Telegraf
For development, I chose TypeScript because of its type safety and better tooling for catching errors early. I'm using the Telegraf library, which is a powerful framework for creating Telegram bots and simplifies managing the bot’s commands and interactions.
So far, I have implemented the following core commands:
-
/newmatch: Allows a user to create a new match by specifying:
- Description (e.g., "Sunday Morning Padel")
- Date and Time (e.g., "August 31, 9:00 AM")
- Location (e.g., "Padel Court 3, City Sports Complex")
-
/matches: Displays a list of all upcoming matches in the group chat, including:
- Match description
- Date and time
- Location
- Players who have already signed up
Each match has interactive buttons for the following:
- Sign Up: Registers the user for the match.
- Remove Sign-up: Removes the user from the match if they can no longer attend.
3. Match Creation & Management Workflow
Here’s how the match creation process works:
- A user starts the
/newmatch
command in a private chat or the group chat. - The bot requests the necessary details:
- Match Description (e.g., "Sunday Morning Padel")
- Date and Time (e.g., "August 31, 9:00 AM")
- Location (e.g., "Padel Court 3, City Sports Complex")
- Once the details are provided, the match is created and stored. It will be visible in the group when users call the
/matches
command.
The /matches
command displays all active matches along with the option for users to sign up or remove their participation using the interactive buttons.
4. Personal Project for Friends
This bot is currently a personal project that I’m developing for my friends and me to use when organizing our padel matches. It is not intended for public release at the moment, but it serves as a useful tool for our group to streamline match creation and participation. I’m excited to see how it improves our coordination and makes setting up games much easier.
Next Steps
In the upcoming phases, I plan to implement the following:
Match Notifications: I will add automatic notifications for upcoming matches, ensuring that players are reminded about their games ahead of time. This will help reduce last-minute cancellations and keep everyone informed.
Match Results Tracking: After a match is completed, I plan to include a feature where the bot prompts users to input the result of the match. This could be as simple as submitting scores, and the bot will then store and display them in the chat. This way, players can keep track of the results over time and add a competitive element to the matches.
Polishing and Optimization: Refining the user experience, fixing bugs, and ensuring the bot runs smoothly as more matches and users are added.
Stay Updated!
Even though this is a personal project, I'm excited to continue refining it and sharing updates on the development process. Your feedback and suggestions are always welcome, so feel free to leave a comment, and follow along as I make progress.
Top comments (0)