forked from zovos/bot_tg
9.9 KiB
9.9 KiB
Sex Bomba TG Bot
Телеграм‑бот, который:
- вписывает текст шрифтом Impact (белый с чёрной обводкой) в макеты (
/maket); - делает мемы из присланных фото (
/gen_mem Up:... Down:...); - подсказывает, сколько минут до перекура по заданному расписанию (
/break); - показывает расписание, текущую и следующую пару (
/schedule, можно с днём недели); - умеет базарить (
/talk) с контекстом 100 сообщений; - авто-ответы в чате (10% шанс + триггер-слова);
- миниигра
/penis+/top_penis; - казино на размер (
/penis_casino); - гадание на фене с мемом (
/gadanie); - ставки на матчи CS2, Dota 2, футбол с реальными коэффициентами (
/matches,/bet).
Запуск
docker compose up --build -d
Логи:
docker compose logs -f bot
Остановка:
docker compose down
Переменные окружения: задайте BOT_TOKEN в .env.
Для ИИ-фич нужен LLAMA_API_URL.
По умолчанию проект настроен на https://mirror.porno4free.ru/zovos-ai/.
Если нужен лог reasoning/thinking модели, оставь LLAMA_LOG_THINKING=1; чтобы модель не резалась в режим без thinking, задай LLAMA_FORCE_DISABLE_THINKING=0.
Для ставок нужен ODDS_API_KEY (бесплатно на https://the-odds-api.com).
Контейнер хранит состояние в ./db:
penis_stats.sqlite3— статистика игры /penischat_history.sqlite3— история для ИИ-общенияpolychaetsi_stats.json— статистика слова "получается"bets.sqlite3— ставки на спортeconomy.sqlite3— экономическая система (балансы, вклады, кредиты)nude_history.json— история запросов /nude
Команды
/start— отвечает кратко./help— выводит подсказки и список макетов./maket <id> <текст>— вписать текст в макет. Доступные:1 — Владимир Владимирович Путин самый лучший президент(737x414, точка 104,240)./gen_mem Up:верх Down:низ— прислать с фото (подпись) или ответом на фото. Можно указывать только Up или только Down./break— показывает, сколько минут до ближайшего перекура/идёт ли перекур./schedule [пн|mon]— показывает расписание на ближайший указанный день недели; без аргумента показывает сегодня, текущую и следующую пару./talk <сообщение>— побазарить с ИИ (контекст 100 сообщений)./penis— миниигра, 1 раз в 24 часа./top_penis— топ по длине./polychaetsi— топ по слову «получается»./penis_casino <ставка>— казино на размер (макс 1 см, казино всегда в выигрыше)./gadanie <тема>— ИИ-гадание на фене + авто-мем./ebalnik— вкл/выкл авто-ответы бота в чате./matches [cs|dota|football]— ближайшие матчи с коэффициентами./bet [спорт] <номер> <исход> <ставка>— поставить см на матч./mybets— мои активные ставки./svodka— сводка СВО./uwu [теги]— поиск случайной пикчи/гифки на e621 (по умолчанию sfw, можно указать свои теги).
Экономика ZOV OS 💰
Основная валюта — сантиметры (см), получаемые из игры /penis.
Команды экономики:
/balance— показать баланс и статистику/deposit <сумма> <дни>— открыть вклад по ставке ЦБ РФ/loan <сумма> <дни>— взять кредит под 15% годовых/transfer @username <сумма>— перевести деньги (лимит 20% от капитала)/cb_stats— статистика Центрального Банка/central_bank— детальная статистика ЦБ/cb_rules— правила работы ЦБ/vanomasa— полное обнуление всех балансов (админам)
Фичи экономики:
- Вклады по ставке ЦБ РФ (7.5% годовых)
- Кредиты под 15% годовых
- Налог 13% с ежедневного дохода
- Автоматическое регулирование инфляции
- Фоновый сбор налогов каждый час
- Заработок на сообщениях: 0.01 см за каждое сообщение
- Ежедневные выплаты в 00:00 по МСК за активность
Центральный Банк ZOV OS 🏛️ (децентрализованный):
- Учредительный капитал: 1000 см
- Полностью автоматическая работа без вмешательства
- Все налоги автоматически поступают в ЦБ
- Алгоритмическое регулирование инфляции
- Автоматическая эмиссия при дефляции
- Автоматическая скупка денег при инфляции
- Прозрачная статистика для всех пользователей
- Никакого ручного управления - система работает по правилам
Макеты и шрифт
- Шрифт
impact.ttfлежит в корне. - Макеты в
maket/, сейчас есть1.png. Добавляйте новые, прописав их в словареTEMPLATESвmain.py.
Технологии
- Python 3.11, aiogram 3, Pillow.
- llama.cpp для ИИ-фич.
- Dockerfile + docker-compose для развёртывания.
Docker Notes
- Образ ставит
tzdata, поэтомуZoneInfo("Europe/Moscow")нормально работает в контейнере. - В образ копируется весь проект, а runtime-данные исключены через
.dockerignore. - Если меняешь код или картинки, достаточно пересобрать:
docker compose up --build -d.
HTTPS / Let's Encrypt
- Фронтендовый
nginxтеперь слушает80и443, отдает ACME challenge и сам запускаетcertbotвнутри контейнера. - Для автоматической выдачи сертификата задай в
.env:APP_DOMAIN=bot.example.comAPP_WWW_DOMAIN=www.bot.example.com(опционально)ACME_EMAIL=admin@example.com
- Домен должен уже смотреть на сервер, а порты
80и443должны быть доступны снаружи. - Для безопасной первой проверки можно временно включить
CERTBOT_STAGING=1, потом вернуть0. - Сертификаты и webroot challenge хранятся в docker volumes
certbot_etcиcertbot_www, обновление запускается по кругу с интерваломCERTBOT_RENEW_INTERVAL(по умолчанию12h). - Если нужен старый локальный маппинг портов, можно переопределить
WEBAPP_HTTP_PORTиWEBAPP_HTTPS_PORT, но для реального Let's Encrypt внешний80должен оставаться доступным.
Кратко о логике
/maketподбирает размер текста, чтобы уместить его в область макета./gen_memцентрирует текст по ширине, масштабирует под изображение, рисует белый текст с чёрной обводкой./breakсчитает по расписанию вconfig.pyи показывает следующую пару.- Названия пар и верхняя/нижняя неделя лежат в
config.pyвLESSON_SCHEDULE. /talkшлёт запрос к llama.cpp серверу с контекстом 100 сообщений (хранятся в SQLite)./penis_casino— слоты с множителем x1.2–x3 (games/casino.py)./gadanie— ИИ-гадание + авто-мем черезgenerate_meme(games/fortune.py)./matches+/bet— ставки на реальные матчи, коэффициенты через The-Odds-API (games/betting.py). После/matches cs|dota|footballможно короче:/bet <номер> <исход> <ставка>.
ИИ-модуль (AI/talk_handler.py)
Подключается к llama.cpp серверу через OpenAI-совместимый API (/v1/chat/completions). Хранит контекст 100 сообщений в SQLite.
Настройка сервера:
- Скачать модель:
wget https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF/resolve/main/qwen2.5-1.5b-instruct-q4_k_m.gguf - Запустить:
./llama-server -m model.gguf --host 0.0.0.0 --port 8080 -c 2048 - Прописать URL в
.env:LLAMA_API_URL=http://адрес:8080