Запилил алерты и АХУЕЛ!!!
Изначально мой бот был тупым калькулятором:
- Раз в 10 минут долбил CoinGecko API
- Кэшировал курсы, чтобы не задудосили
- Конвертил BTC в USD и обратно — ну просто пиздец как скучно
Но потом я решил: «Хочу, чтобы бот орал, когда крипта летит к хуям или в космос!»
1. Переход на WebSocket Binance
CoinGecko — лажа, там нет вебсокетов. Пришлось подключать Binance.
2. Первая жесть: серверный пиздец
На компе всё работало, а на сервере — SyntaxError в строке:
f"{random.choice(ALERT_TEMPLATES).format(...)}" # Сервер просто АХУЕЛ
Что сделал:
Разбил на две строки, ибо сервер — долбоёб:
alert = random.choice(ALERT_TEMPLATES) # Сначала шаблон message = alert.format(...) # Потом подстановка
Вывод:
Локальный тест ≠ продакшен. Сервер — это пиздец.
3. Пропадающие настройки: пиздец в квадрате
Включил алерты на BTC, перешёл в конвертер — настройки слетели.
В чём проблема?
Оказалось, конвертер перезаписывал всю хуйню:
user_data = { "alerts": ["BTC"], # Это пиздец как неправильно "conversion": {} # Конвертер затирал алерты! }
Как починил:
Сделал нормальную структуру:
user_data = { "alerts": {"coins": ["BTC"]}, # Теперь не перезаписывается "conversion": {} # Живёт отдельно }
Итог:
JSON и datetime — ебучие уёбки.
4. Конфликт ботов: адский пиздец
Запустил нового бота — старый не хотел умирать.
TelegramConflictError: другой экземпляр уже работает!
sudo pkill -f "python.*bot.py" # Не помогло kill -9 <PID> # Тоже мимо systemctl restart mybot # Зомби оживал
KillMode=process
И просто подождал 2 минуты — Telegram API тормознутое говно.
5. Спам-апокалипсис: бот ебнулся
Когда ETH подскочила на 7%, бот начал нести хуйню:
[12:00] ОХУЕТЬ! SOL +5%! [12:01] ОХУЕТЬ! SOL +5.1%! [12:02] ОХУЕТЬ! SOL +4.9%!
Как пофиксил:
Добавил дебаунсинг и порог срабатывания:
def need_alert(crypto, change): return ( abs(change) > 5.0 # Не меньше 5% and (time.time() - last_alert) > 300 # Раз в 5 минут )
Вывод:
Без ограничений бот превращается в еблана-спамера.
Итог: что получилось
✅ Алерты в реальном времени — WebSocket рулит
✅ Яркие уведомления
✅ Стабильная работа — после тонны костылей
Выводы:
- Логируй всё — без логов ты в жопе.
- Тестируй на сервере — локально ≠ продакшен.
- Не доверяй datetime — JSON его ненавидит.
- systemd — мразь — убивать процессы надо жёстко.
Главный урок:
«Если код работает с первого раза — значит, ты что-то забыл.»
Гитфлик: [https://gitflic.ru/project/system_develop/kripto_bot] | ТГ-канал: [https://t.me/system_develop]