Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kerelko/team-finder-telegram-bot

Redis+MongoDB telegram bot that helps users to find teammates for different games.
https://github.com/kerelko/team-finder-telegram-bot

docker-compose mongo mongodb python python-telegram-bot python3 redis redis-database telegram telegram-bot

Last synced: 30 days ago
JSON representation

Redis+MongoDB telegram bot that helps users to find teammates for different games.

Awesome Lists containing this project

README

        

# Team-finder-telegram-bot
The __Team Finder Telegram Bot__ helps users find teammates for different games.
It is powered by [Redis](https://redis.io/) and [MongoDB](https://www.mongodb.com/)

## Technoogies
- [Redis](https://redis.io/): Used as temporary storage for quick data access.
- [MongoDB](https://www.mongodb.com/): Serves as the primary database for storing user data.
- [Python-telegram-bot](https://python-telegram-bot.org/): The main library for interacting with the Telegram API.

## Brief overview
### Data collection
1. The bot collects user data, which is then saved to __MongoDB__

![image](https://github.com/user-attachments/assets/1b6c4cc6-4ffc-4178-9bf7-4434c2fadeb6)

### User options
2. After data collection, the user has two options:
- Create a team
- search for a team to join

### Joining a Team
4. If the user chooses to join a team, he simply uses the __/find__ command. The bot then tries to find the best match based on the data provided by the user.
![image](https://github.com/user-attachments/assets/d4dd9722-d2bb-493f-9403-989ff1f4a6cb)

### Creating a Team
5. If the user chooses to create a team, they provide the necessary information to the bot.
The bot stores this data in __Redis__, which saves and indexes it for a certain time
(15 minutes by default). During this period, other users can join the team.

![image](https://github.com/user-attachments/assets/191918f3-2616-462a-b099-ee5564a08d15)

## Structure
```
.
├── data
│ └── mongodb
├── docker-compose.yaml
├── Dockerfile
├── games.json
├── LICENSE
├── main.py
├── Makefile
├── poetry.lock
├── pyproject.toml
├── README.md
├── src
│ ├── bot
│ │ ├── constants.py
│ │ ├── filters.py
│ │ ├── handlers
│ │ │ ├── base.py
│ │ │ ├── commands.py
│ │ │ ├── conversations.py
│ │ │ └── __init__.py
│ │ ├── __init__.py
│ │ └── utils
│ │ ├── __init__.py
│ │ └── parsers.py
│ ├── common
│ │ ├── config.py
│ │ ├── di.py
│ │ ├── filters.py
│ │ ├── __init__.py
│ │ └── utils.py
│ ├── domain
│ │ ├── entities
│ │ │ ├── games
│ │ │ │ ├── base.py
│ │ │ │ ├── impl.py
│ │ │ │ └── __init__.py
│ │ │ └── __init__.py
│ │ └── __init__.py
│ ├── infra
│ │ ├── __init__.py
│ │ └── repositories
│ │ ├── base.py
│ │ ├── impl.py
│ │ └── __init__.py
│ └── __init__.py
└── tests
├── conftest.py
├── details
│ ├── conftest.py
│ ├── __init__.py
│ ├── test_mongo_repo.py
│ └── test_redis_repo.py
├── domain
│ ├── entities
│ │ ├── conftest.py
│ │ ├── __init__.py
│ │ ├── test_games.py
│ │ ├── test_groups.py
│ │ └── test_user.py
│ └── __init__.py
└── __init__.py
```