Створи Telegram-бота на Python, використовуючи Aiogram 3. Усі функції повинні бути реалізовані з часом, можна по трохи з заглушками. Архітектура має бути модульною, щоб у майбутньому можна було легко додавати нові механіки.
База даних повинна бути JSON-файлами. Один файл для профілю користувача, окремі файли для карт, паків, конфігурації, статистики та інших даних. Усі дані повинні автоматично зберігатися після кожної зміни.
Бот призначений тільки для одного користувача, тому авторизація не потрібна. Достатньо перевірки Telegram ID, який задається в config.
Основна ідея бота — мотивація до навчання через колекціонування карт Pokémon.
Основний цикл:
користувач навчається без бота+вводить кількість хвилин/запускає таймер ботом на навчення і по його кінцю підтверджує;
отримує кристали;
витрачає кристали на паки;
відкриває паки;
отримує карти;
збирає колекцію;
закриває сети;
отримує нагороди;
продовжує навчатися.
1 хвилина навчання дорівнює 1 кристалу.
У бота повинно бути красиве меню з Inline-кнопками.
Головне меню повинно містити:
Профіль
Навчання
Магазин
Відкриття паків
Колекція
Статистика
Досягнення
У профілі показувати:
аватарку користувача
рівень;
загальну кількість хвилин;
кількість кристалів;
зоряний пил;
кількість відкритих паків;
кількість карт;(вього унікальних)
відсоток зібраної колекції(їх багато різних);
Система рівнів.
Рівень залежить лише від загальної кількості хвилин навчання.
При кожному новому рівні користувач отримує нагороду.
Навчання.
Після натискання кнопки "Навчання" користувач вибирає додати хв/почати таймер і відповідно вибирає кількість хвилин
Після цього потрібно вибрати категорію:
Англійська
Французька
Іспанська
Географія
Право
Інше
Після підтвердження:
додаються хвилини;
додаються кристали;
оновлюється статистика;
перевіряються досягнення;
перевіряється підвищення рівня.
Магазин.
Повинні існувати різні типи паків. Але для початку буде доступно тільки 2
Basic Pack
Summer 2026 Pack
можна легко додавати нові через JSON.
Система випадіння карт повинна бути універсальною.
Рідкість:
Common
Uncommon
Rare
Epic
Legendary
Mythic
Шанс випадіння задається окремим JSON-файлом, щоб його можна було легко змінювати для кожного пака окремо свій можна.
Карти.
У кожної карти повинні бути поля:
id
номер покедекса
назва
тип
рідкість
серія
покоління
опис
зображення
версія
назва пака де він
Підтримувати різні варіанти карт:
Normal
Holo
Gold
Rainbow
Shadow
Ghost
Shiny
( Для початку буде мало типів, з чим не заморач)
Паки.
Під час відкриття пака повинна запускатися анімація відкриття повідомленнями Telegram. Анімація має бути цікава не просто 1 повідомлення.
Карти показ по 1 і треба нажимати дальше щоб продовжити.
Якщо карта нова — це відображається
Якщо карта вже існує — це вважається дублікатом.
Дублікати.
Кожен дублікат автоматично додає зоряний пил.
Кількість пилу залежить від рідкості.
Наприклад:
Common 1
Uncommon 3
Rare 10
Epic 25
Legendary 100
Mythic 250
Колекція.
Показувати всі отримані карти.
Можна фільтрувати:
по даті отрим
по рідкості;
по паку;
по улюбленим;.
Для кожної карти показувати:
зображення;
назву;
номер;
рідкість;
версію;
кількість копій отриманих
Статистика.
Показувати:
сьогоднішні хвилини;
цього тижня;
цього місяця;
загалом;
кількість відкритих паків;
кількість нових карт/всього наявних
кількість дублікатів;
найчастіше відкриваний пак.
Досягнення.
Автоматично перевіряти.
Наприклад:
50 хвилин
100 хвилин
500 хвилин
1000 хвилин
10000 хвилин
10 паків
100 паків
250 паків
10 легендарок
50 легендарок
100 легендарок
50% колекції пака
75% колекції пака
100% колекції пака
За кожне досягнення видавати нагороду.
50 ХВ право
...
( і т.д з іншими)
Серія входу.
Зображення.
Кожна карта повинна показувати красиве PNG-зображення.
Бот повинен автоматично відправляти фотографію карти з підписом.
Підпис містить:
назву;
номер;
тип;
рідкість;
версію;
опис.
нове/повторка
Структура проєкту повинна бути професійною.
Весь код має бути чистим, сучасним, добре документованим та розбитим на логічні модулі.
Усі налаштування повинні зберігатися в JSON, без хардкоду.
Усі шанси випадіння, ціни паків, нагороди, досвід, рівні, сети, рідкість карт, варіанти карт та інші параметри повинні легко редагуватися.
Продумай економіку так, щоб прогрес був поступовим і цікавим навіть після кількох місяців використання.
Картинки я згенерую сам і зміст паків ти зроби там заглушку. Почнемо з основ і структури
Menu
Comments (0)
No comments yet. Be the first!
Sign in to leave a comment
My Collection
14Unique
18Total Cards
9%Complete
x3
Pikachu
CommonBasic Pack
2025-01-15
Bulbasaur
CommonBasic Pack
2025-02-10
x2
Charmander
UncommonBasic Pack
2025-03-05
Squirtle
UncommonBasic Pack
2025-01-20
Mewtwo
LegendarySummer 2026 Pack
2025-04-01
x2
Jigglypuff
RareBasic Pack
2025-02-28
Gengar
EpicSummer 2026 Pack
2025-03-15
Charizard
RareSummer 2026 Pack
2025-04-05
Raikou
LegendarySummer 2026 Pack
2025-03-22
Suicune
LegendarySummer 2026 Pack
2025-02-14
Articuno
EpicBasic Pack
2025-03-30
Zapdos
EpicBasic Pack
2025-01-30
Moltres
EpicBasic Pack
2025-04-10
Lugia
MythicSummer 2026 Pack
2025-04-12
Collection Insights
14Unique Cards
out of 150 total
18Total Cards
4 duplicates
9%Completion
LugiaRarest Card
Mythic
LugiaLatest Card
2025-04-12
Milestones
50% Collection9% / 50%
75% Collection9% / 75%
100% Collection9% / 100%
Welcome back, Trainer!
Ready to learn and expand your collection?
25min
Study minutes become crystals, crystals fill a pack, and the pack opens to reveal new cards.
No comments yet. Be the first!