Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

KrisBot — телеграм-бот «Крыс» v1

Подпольный бар-казино в вашем групповом чате.
Валюта: фишки. Игры: кости, слоты, рулетка, блэкджек.


Быстрый старт

1. Получить токен у @BotFather

  1. Открой Telegram → @BotFather → /newbot
  2. Дай боту имя (например Крыс) и username (например krys_casino_bot)
  3. Скопируй токен вида 123456:ABC-DEF...

2. Настройка

cp .env.example .env
# Вставь токен в .env:# BOT_TOKEN=123456:ABC-DEF...# DB_PATH=krys.db

3. Запуск локально

python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:source .venv/bin/activate
pip install -r requirements.txt
python -m bot

Добавление бота в группу

  1. Добавь бота в групповой чат.
  2. Права бота: права администратора не нужны.
  3. Privacy mode — обязательно выключить: @BotFather → /setprivacy → выбери бота → Disable. Без этого бот видит только команды и не может считать активность игроков в чате.
  4. Каждый игрок должен один раз написать боту /startв личку — это нужно для рулетки (сборка корзины) и блэкджека (игра в личке).

Если игрок не писал боту в личку, при попытке открыть рулетку/блэкджек в группе он получит подсказку.


Команды

КомандаОписание
/startРегистрация; при первом запуске +1000 фишек
/balanceБаланс и долг (+ фишки за активность)
/bonusЕжедневная подачка 100 фишек (раз в 24 часа)
/loan <сумма>Кредит до 500 фишек (+30% долг)
/dice <ставка>Открыть стол костей (в группе)
/slotsСлот-машина
/rouletteРулетка (стол в группе, ставки в личке)
/blackjackБлэкджек (в личке, итог в группе)
/helpПравила заведения

Пассивный доход за активность

Игроки автоматически получают фишки за присутствие в групповом чате — без спама:

  • Первое обычное текстовое сообщение в 30-минутном окне приносит 5 фишек.
  • Все последующие сообщения в том же окне — ничего.
  • Дневной потолок: 50 фишек с активности (≈10 разных полчасов).
  • Начисление молчаливое: бот никак не реагирует в чат.
  • Накопленное за день отображается при /balance в стиле Крыса.

Числа (INCOME_PER_WINDOW, INCOME_WINDOW_SEC, INCOME_DAILY_CAP) — модульные константы в bot/economy.py, легко подстраиваются.

Требование: у бота должен быть выключен privacy mode (см. «Добавление бота в группу»).


Игры

Кости (/dice <ставка>)

  • Работает в группе.
  • Хозяин открывает стол, остальные садятся кнопкой.
  • Каждый бросает свой кубик 🎲; наибольший результат забирает банк − 5% комиссии.
  • Если никто не присел — Крыс может войти сам (шанс зависит от баланса хозяина).

Слоты (/slots)

  • Работает везде.
  • Ставки: 10 / 20 / 50 / своя сумма / ва-банк.
  • Нативная слот-машина Telegram 🎰.

Важно: декодирование барабанов слотов (decode_slots в bot/games/slots.py) реализовано по неофициальному маппингу Telegram. При первом запуске обязательно проверь визуально, что выплата совпадает с тем, что отображается в анимации. Если расхождение — скорректируй таблицу символов в REEL_DISPLAY.

Рулетка (/roulette)

  • Стол открывается в группе.
  • Ставки собираются в личке (нужен предварительный /start в личке).
  • Поддерживаемые ставки: красное/чёрное, чёт/нечет, дюжины (1–12 / 13–24 / 25–36), на число.
  • Европейское колесо 0–36, edge 2.70%.

Блэкджек (/blackjack)

  • Команда из группы → бот открывает личку для игры; итог постится в группу.
  • Команда из лички → играть прямо там.
  • Правила: S17, блэкджек 3:2, Hit/Stand/Double. Без сплита и страховки.

Деплой на сервере (systemd)

# Создай пользователя
sudo useradd -r -m -d /opt/krysbot krysbot
# Скопируй файлы
sudo cp -r . /opt/krysbot/
sudo chown -R krysbot:krysbot /opt/krysbot
# Настрой .env
sudo -u krysbot nano /opt/krysbot/.env
# Создай venv и установи зависимости
sudo -u krysbot python3 -m venv /opt/krysbot/.venv
sudo -u krysbot /opt/krysbot/.venv/bin/pip install -r /opt/krysbot/requirements.txt
# Установи и запусти сервис
sudo cp deploy/krys-bot.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable krys-bot
sudo systemctl start krys-bot
# Проверка
sudo systemctl status krys-bot
sudo journalctl -u krys-bot -f

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

bot/
__main__.py — точка входа
config.py — загрузка env
db.py — aiosqlite, инициализация схемы
economy.py — балансы, долги, кредиты (атомарно); константы INCOME_*
persona.py — банки фраз Крыса
keyboards.py — CallbackData + клавиатуры
bets.py — общий поток ввода ставки (FSM)
sessions.py — реестр живых столов в памяти
activity.py — пассивный доход за активность (in-memory, batch flush)
games/
dice.py — логика костей
slots.py — декод 🎰 + таблица выплат
roulette.py — европейское колесо
blackjack.py — колода, подсчёт руки, S17
handlers/
common.py — /start /balance /bonus /loan /help
dice.py — стол костей
slots.py — слоты
roulette.py — рулетка
blackjack.py — блэкджек
activity.py — catch-all: учёт активности (регистрируется последним)

About

Telegram-бот с внутриигровой экономикой для групповых чатов: балансы, кредиты, начисление за активность, четыре игры. Python, aiogram 3, aiosqlite, деплой через systemd.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages