Skip to content

tokenville/fishing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎣 Fishing Bot - High-Performance Async Architecture

Высокопроизводительный Telegram бот для виртуальной рыбалки с трейдингом криптовалют. Построен на полностью асинхронной архитектуре с поддержкой сотен одновременных пользователей.

✨ Ключевые особенности:

  • Полностью асинхронная архитектура - asyncio, asyncpg, aiohttp
  • 🚀 Высокая производительность - connection pooling, retry logic, rate limiting
  • 🎯 87 уникальных рыб - absurd-style концепции с AI-генерацией изображений
  • 💰 8 криптовалютных пар - TAC, BTC, SOL, ADA, MATIC, AVAX, LINK, DOT
  • 💵 Виртуальный баланс - $10,000 стартовый баланс, $1,000 ставка на заброс
  • 🏆 Система лидербордов - общий рейтинг, недельные и дневные топы
  • 🎮 Прогрессивная система - уровни, опыт, разблокировка контента
  • 🔒 Защита от спама - rate limiting (10 команд в минуту)
  • 🎨 HTML форматирование - красивые сообщения с эмодзи и стилями

Установка и запуск

  1. Установка зависимостей:
pip install -r requirements.txt
  1. Создание Telegram бота:

    • Найти @BotFather в Telegram
    • Отправить /newbot
    • Следовать инструкциям и получить token
    • Редактировать start_bot.sh с вашим токеном
  2. Запуск бота:

# Основной способ - асинхронный запуск
export TELEGRAM_BOT_TOKEN="your_token_here"
python3 main.py

# Или через скрипт
chmod +x start_async_bot.sh
./start_async_bot.sh

Команды бота

  • /cast - Забросить удочку (стоит 1 BAIT токен)
  • /hook - Подсечь рыбу и закрыть позицию
  • /status - Посмотреть текущую позицию
  • /pnl - Показать ваш баланс и P&L статистику
  • /leaderboard - Топ-10 игроков по балансу
  • /leaderboard week - Недельный лидерборд
  • /help - Помощь и правила игры

💰 Система виртуального баланса

Концепция

Каждый игрок начинает с виртуальным балансом $10,000. Каждый заброс (/cast) это автоматическая ставка $1,000 на выбранную криптовалютную пару.

Расчет P&L

Результат = $1,000 × (Изменение цены %) × Leverage удочки
Баланс = $10,000 + Сумма всех P&L

Пример:

  • Заброс с Long удочкой (2x leverage)
  • TAC растет на +5% → Прибыль: $1,000 × 5% × 2 = +$100
  • TAC падает на -3% → Убыток: $1,000 × (-3%) × 2 = -$60

Лидерборды

  • /leaderboard - общий топ-10 по балансу
  • /leaderboard week - недельный рейтинг
  • /leaderboard day - дневной рейтинг
  • Показывает позицию в рейтинге, винрейт, средний P&L

Ключевые улучшения

🎯 Упрощенная анимация заброса:

🎣 Getting ready to cast...
→ 💫 Whoosh! Line flies through the air!
→ 💦 *SPLASH!* Perfect landing!
→ 🌊 Bait sinks into the depths...

⏰ Надежные обновления:

  • Периодичность: 5 сек пауза, затем каждые 10 сек в течение 1 минуты
  • Последовательность: Сообщения меняются по порядку
  • Финал: "🔮 Now we wait... the fish will decide"
  • Исправлено: баг с перепрыгиванием сообщений

🎭 Простая подсечка:

🎣 {username} SETS THE HOOK!
→ ⚡ Reeling in... almost there!
→ 🌊 Something is coming up from the depths!
→ 🏆 FISHING COMPLETE!
  • Leverage: Long удочки (+2x до +6x), Short удочки (-2x до -6x)
  • Стартовые токены: 10 BAIT при первом использовании
  • Цены: Реальные с CoinGecko API
  • Рыбы: От Старый Сапог (убыток) до Золотой Дракон (огромная прибыль)

Структура проекта

fishing/
├── main.py                    # Главная точка входа
├── src/
│   ├── bot/
│   │   ├── telegram_bot.py    # Основной модуль бота (async)
│   │   ├── command_handlers.py # Обработчики команд с rate limiting
│   │   ├── animations.py      # Анимации и обновления статуса
│   │   └── message_templates.py # HTML-форматированные шаблоны
│   ├── database/
│   │   └── db_manager.py      # Асинхронный PostgreSQL с пулом соединений
│   ├── utils/
│   │   └── crypto_price.py    # Асинхронное получение цен (aiohttp)
│   └── generators/
│       └── fish_card_generator.py # AI-генерация с семафором
├── config/                     # Конфигурационные файлы
├── docs/                       # Документация
├── requirements.txt            # Python зависимости
├── Dockerfile                  # Docker образ для деплоя
├── fly.toml                    # Конфигурация Fly.io
└── start_async_bot.sh         # Асинхронный скрипт запуска

Архитектура и производительность

🏗️ Асинхронная архитектура:

  • asyncpg - высокопроизводительный PostgreSQL драйвер
  • Connection Pool - min=10, max=50 соединений
  • Retry Logic - exponential backoff для отказоустойчивости
  • Rate Limiting - защита от спама (10 команд/минута)
  • Thread Safety - безопасность при concurrent операциях
  • AI Semaphore - ограничение на 3 одновременных генерации изображений

📊 Оптимизации для высоких нагрузок:

  • JIT отключен для стабильной производительности PostgreSQL
  • Batch операции для множественных запросов
  • Graceful shutdown с корректным закрытием пула соединений
  • Кеширование AI-генерированных изображений в базе данных
  • Параллельная обработка команд пользователей

🔧 Мониторинг и отладка:

  • Детальное логирование всех операций
  • Метрики производительности запросов
  • Автоматическая очистка rate limit данных

База данных PostgreSQL

PostgreSQL база с автоматической миграцией при первом запуске:

  • Таблица users - пользователи и их BAIT токены
  • Таблица positions - активные и закрытые позиции

Тестирование

Вариант 1: Приватный чат (для разработки)

  1. Найти своего бота в Telegram
  2. Написать /start или /cast
  3. Тестировать команды в приватном чате

Вариант 2: Групповой чат (для продакшна)

  1. Добавить бота в группу Telegram
  2. Использовать команды в группе для социальной рыбалки
  3. Все участники группы могут видеть результаты рыбалки

Автоматический тест

python3 test_bot.py

База данных fishing_bot.db создастся локально автоматически.

Ready to fish! 🎣

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published