Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wetterkrank/dasbot
A Telegram bot that helps you learn German der/die/das articles.
https://github.com/wetterkrank/dasbot
aiogram asyncio docker dynaconf german-language marshmallow mongodb mongomock quiz telegram-bot
Last synced: about 2 months ago
JSON representation
A Telegram bot that helps you learn German der/die/das articles.
- Host: GitHub
- URL: https://github.com/wetterkrank/dasbot
- Owner: wetterkrank
- License: mit
- Created: 2020-09-27T11:56:37.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-07-18T17:56:11.000Z (5 months ago)
- Last Synced: 2024-08-01T22:55:16.153Z (5 months ago)
- Topics: aiogram, asyncio, docker, dynaconf, german-language, marshmallow, mongodb, mongomock, quiz, telegram-bot
- Language: Python
- Homepage: https://dasbot.yak.supplies
- Size: 1.01 MB
- Stars: 17
- Watchers: 4
- Forks: 3
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# dasbot
A Telegram bot that helps you learn German der/die/das articleshttps://dasbot.yak.supplies
## How to run
1. Clone the repo
2. Edit settings/set the env variables (see `settings.toml` and `.env.example`)
3. Create and activate a virtual environment: `python3 -m venv .venv && source ./.venv/bin/activate`
4. Install dependencies: `pip install -r requirements.txt`
5. Run `make run`As an alternative,
- Run `docker compose up` after the first two steps## Notes
**Todo**
- Daily quiz ✔
- Spaced repetition ✔
- Statistics ✔
- Hint: translation and/or context ✔
- Webhooks instead of long polling ✔
- Add Docker build/push actions to CI ✔
- Randomize quiz time on 1st start ✔
- Move DB to MongoDB Atlas ✔
- Select words by level -- A1, B1, ...
- i18n
- Revise the words database
- Let users add their words
- "Forget me" command
- Custom quiz intervals ("N times/day every 3 hours")
- Postpone broadcast when restarting after outage (use a one-off script?)**Spaced repetition**
I've adapted a simple algorithm borrowed from [drill-srs](https://github.com/rr-/drill).
Card score | Wait time
---------- | ---------
0 | (new question)
1 | 1 hour
2 | 1 day
3 | 1 week
4 | 1 month
5 | 3 months
6 | 6 monthsA correct answer increases the card's score by 1, while a mistake decreases its score by 1.
**Сorner cases**
- Some nouns can have different gender depending on the meaning: *der See* (lake) - *die See* (sea), *der Leiter* (leader) - *die Leiter* (ladder)
- For some nouns, more than one gender is correct, with the same meaning (*der/das Teil*)
- Sometimes gender depends on the context (die/der *Jugendliche*, *Beschäftigte*, *Erwachsene*, *Geliebte*)
- ... what else?