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