ВС-РУК-001
Стр. 1 из 1
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-001-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ ЖИТЕЛЕЙ ГОРОДА
СЕКРЕТНО
Официальное руководство
Верхняя Сибирь
Руководство нового жителя
Тип игры
Экономика / Полу-ролевая
Вводный параграф
Добро пожаловать в Верхнюю Сибирь. Вы оказались на улице, не имея представления о своей личности и целях. Снег бьёт в лицо, ветер тащит вперёд. Первым шагом является получение паспорта — без него вы лишь неприкаянный человек без имени и прав.
Никто не помнит, как оказался здесь. Это не потеря памяти — это природа города. Верхняя Сибирь сама решает, где вам стоять.
Данный документ является собственностью администрации Верхней Сибири. Лицо, обнаружившее документ вне зоны допуска, обязано немедленно сообщить в мэрию по установленной форме.
Основные команды
!паспорт — получить документы нового жителя
!баланс — проверить счёт в банке
!работа — список доступных вакансий
!магазин — открыть городской магазин
ВС-РУК-002
Регистрация
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-002-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ ЖИТЕЛЕЙ ГОРОДА
ОТКРЫТО
Получение паспорта
Без паспорта вы не существуете в базе данных города. Счёт не открыт. Работа недоступна. Кражу вас поймают немедленно. Паспорт — первый и обязательный шаг.
Паспорта выдаются исключительно в холле мэрии. Обратитесь к регистратору или мэру — они имеют право оформить документы. Самостоятельно получить паспорт невозможно.
Процедура выдачи
Регистратор вводит команду в канале мэрии. Формат строгий — любое отклонение приводит к отказу системы.
!паспорт дать @житель ИмяБезПробелов Возраст Фото
Имя — без пробелов, произвольное игровое имя.
Возраст — целое число от 18 до 70.
Фото — прямая ссылка на изображение (.jpg, .jpeg, .png или .gif).
Команда выдачи паспорта работает только в строго отведённом канале мэрии. Попытка вызвать её в другом месте будет отклонена.
После регистрации
В момент выдачи паспорта система автоматически открывает личный счёт. Начальный баланс — 0 ₽ наличкой и 0 ₽ в банке. Первые средства необходимо заработать самостоятельно.
Паспорт действителен 60 дней с момента выдачи. По истечении срока он считается просроченным. Владелец получит уведомление заблаговременно.
Просроченный паспорт
Просроченный паспорт не аннулируется автоматически, однако ряд действий становится недоступен. Для продления обратитесь к регистратору или мэру в канале мэрии.
!паспорт обновить @житель
Просмотр паспорта
Свой паспорт или паспорт другого жителя можно запросить к просмотру. Владелец паспорта вправе отказать.
!паспорт посмотреть — свой паспорт
!паспорт посмотреть @житель — чужой паспорт
ВС-РУК-003
Экономика
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-003-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ ЖИТЕЛЕЙ ГОРОДА
ОТКРЫТО
Счёт жителя
У каждого зарегистрированного жителя есть два счёта: наличка и банк. Наличка — средства при себе, доступны немедленно, но уязвимы для кражи. Банк — защищённый счёт, который не может быть ограблен, однако для использования требует снятия.
Валюта города — рубль (₽). Проверка баланса:
!баланс или !баланс @житель — показывает оба счёта.
Ежедневный бонус
Раз в сутки каждый житель может получить 200 ₽ наличными. Бонус начисляется немедленно. Повторный вызов в тот же день будет отклонён.
!дейли
Перевод средств
Передать наличку другому жителю можно напрямую. Перевод осуществляется только из наличных — банковские средства необходимо предварительно снять.
!деньги передать @житель <сумма>
Рейтинг жителей
Топ богатейших жителей города формируется по совокупному балансу (наличка + банк). Страницы переключаются аргументом.
!топ или !топ <страница>
Профиль
Профиль отображает баланс жителя и статистику: количество краж, ограблений, штрафов. Можно просматривать свой или чужой.
!профиль или !профиль @житель
ВС-РУК-004
Занятость
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-004-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ ЖИТЕЛЕЙ ГОРОДА
ОТКРЫТО
Подработка
Подработка — основной легальный способ заработка в городе. Система назначает случайную вакансию в соответствии с полом жителя и генерирует короткую историю о рабочей смене.
Вознаграждение — от 500 до 1500 ₽ наличными. Сумма случайна при каждом вызове.
!работа
Кулдаун
После каждой смены необходима пауза. Повторная подработка доступна через 24 часа. Попытка вызвать команду раньше отображает оставшееся время ожидания.
Команда
!работа / !sidejob / !job
Вознаграждение
500 — 1500 ₽
Доступные вакансии
Перечень мест подработки зависит от пола жителя. Среди мужских вакансий: завод, склад, бригада по ремонту, библиотека, кофейня, парикмахерская. Список женских вакансий аналогичен по объёму. Все вакансии равнозначны по оплате — специализация влияет только на повествование.
Подработка начисляет деньги на наличку. Рекомендуется своевременно переводить часть на банковский счёт во избежание потери при ограблении.
ВС-РУК-005
Финансы
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-005-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ ЖИТЕЛЕЙ ГОРОДА
ОТКРЫТО
Банковские операции
Банковский счёт защищён от кражи. Перевести наличные на банк — депозит; снять обратно — снятие. Вместо точной суммы можно указать all — система переведёт весь доступный остаток.
!деп <сумма|all> — внести наличку в банк
!снять <сумма|all> — снять с банка в наличку
Штрафы
Штраф выписывается сотрудником правоохранительных органов. При получении штрафа система предлагает два варианта: оплатить немедленно или отложить в долг. Если наличных недостаточно для полной оплаты — часть вносится сразу, остаток записывается в долг.
!штрафы — список неоплаченных штрафов
!штрафы оплаченные — история оплаченных
!штрафы оплатить <номер> — погасить конкретный штраф
Оплата штрафа производится только с наличного счёта. Банковские средства не списываются автоматически. Убедитесь, что наличных достаточно, прежде чем оплачивать.
Долги
Неоплаченные штрафы формируют долг. Долг не начисляет процентов и не аннулируется автоматически — он числится до момента погашения. Общая сумма задолженности отображается в нижней части списка штрафов.
Если наличных не хватает на погашение — пополните счёт подработкой или переводом, затем оплатите штраф.
Государственный бюджет
Каждая структура города ведёт отдельный бюджет: мэрия, полиция, больница, прокуратура. Внести средства в бюджет своей структуры могут главы ведомств. Снять средства из любого бюджета — исключительное полномочие мэра.
!бюджет — просмотр состояния всех бюджетов
!бюджет внести <сумма> [структура] — внести средства
!бюджет снять <сумма> <структура> — снять средства (только мэр)
При внесении средств в бюджет деньги сначала списываются с наличного счёта, затем с банкового — в порядке остатка.
ВС-РУК-006
Правопорядок
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-006-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ ЖИТЕЛЕЙ ГОРОДА
СЕКРЕТНО
Кража
Кража — единственный незаконный способ получить чужие деньги. Жертвой может стать любой зарегистрированный житель с ненулевым наличным балансом.
!украсть @житель
Механика
При каждой попытке система бросает вероятность. С шансом 40% кража проваливается — бот генерирует короткую историю о неудаче. С шансом 60% попытка успешна: похищается от 10% до 50% наличных жертвы.
Украденное немедленно поступает на наличный счёт грабителя. Оба участника получают запись в статистике.
Похищаемая сумма
10–50% от налички жертвы
Кулдаун грабителя
6 часов
Ограничения
Для совершения кражи необходим действующий паспорт. Без него система немедленно отклоняет попытку — грабителя «поймают».
После успешного ограбления жертва получает защиту на 6 часов: повторное нападение в этот период невозможно. Грабитель не может пытаться снова в течение того же времени. На себя нападать нельзя.
Штрафная система
Полиция вправе выписать штраф за любое нарушение порядка, включая кражу. Штраф назначается вручную сотрудником правоохранительных органов. Механика кражи не предусматривает автоматического штрафа — только потерю кулдауна при провале.
Банковские средства жертвы недоступны для кражи. Храните значительные суммы на банковском счёте.
ВС-РУК-008
ЧаВО
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-008-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ ЖИТЕЛЕЙ ГОРОДА
ОТКРЫТО
Раздел VIII
Часто задаваемые вопросы
Регистрация
Как получить паспорт?
Обратитесь к регистратору или мэру в канале мэрии. Самостоятельно выдать себе паспорт невозможно — только уполномоченные сотрудники вправе провести регистрацию.
Паспорт просрочен. Что делать?
Обратитесь к регистратору в канал мэрии с просьбой обновить документ. Команда продления: !паспорт обновить @вы — вызывается регистратором, не вами.
Я пытаюсь выдать паспорт, но получаю ошибку «только в холле мэрии».
Команда выдачи паспорта работает строго в одном канале, назначенном администратором. Убедитесь, что находитесь в правильном канале.
Экономика
Разница между наличкой и банком?
Наличка уязвима для кражи — другой житель может похитить от 10 до 50% суммы. Банковский счёт защищён, но для трат нужно предварительно снять средства командой !снять.
Почему не работает !дейли?
Бонус доступен один раз в сутки по календарным дням. Если вы уже получали бонус сегодня — следующий станет доступен завтра.
Можно ли украсть деньги с банковского счёта?
Нет. Команда !украсть похищает исключительно наличные жертвы. Средства в банке недоступны для кражи.
Меня ограбили. Могут ли снова?
В течение 6 часов после ограбления вы защищены — система не позволит провести повторную кражу. Используйте это время, чтобы перевести остаток налички в банк.
Штрафы и долги
Нет денег оплатить штраф. Что происходит?
При нехватке наличных система оплачивает доступную часть, а остаток записывает как долг. Долг не начисляет процентов — он просто ждёт погашения.
Как погасить сразу все штрафы?
В интерфейсе списка штрафов есть кнопка групповой оплаты. Все неоплаченные штрафы будут погашены в один раз, если наличных достаточно.
Технические вопросы
Бот не отвечает на команду.
Проверьте: правильный ли канал, активен ли бот (статус онлайн), нет ли активного кулдауна. Если ни одно из этого не применимо — сообщите администратору.
Кулдаун завис или работает некорректно.
Обратитесь к администратору. Сброс кулдауна производится командой !-кулдаун @вы — только для администрации.
Как сообщить об ошибке в боте?
Опишите проблему в соответствующем канале обратной связи. Укажите: команду, которую вызывали; текст ошибки или поведение бота; время события.
ВС-РУК-009
Техническая документация
© 2026 UPPER SIBERIA
ДОКУМЕНТ № ВС-009-РУК
ДАТА ВЫДАЧИ: 30.03.2026
ГРИФ: ДЛЯ РАЗРАБОТЧИКОВ
СЛУЖЕБНОЕ
Раздел IX
Для разработчиков
Стек и зависимости
Бот написан на Python 3.10+. Основные зависимости: discord.py (асинхронный фреймворк), aiosqlite (асинхронная работа с SQLite), Pillow (рендер карты боёв), python-dotenv (переменные окружения).
База данных — SQLite, файл city.db. Хранится рядом с точкой входа. Все операции асинхронные через aiosqlite.
Архитектура
Бот использует систему когов (cogs) — каждый функциональный модуль вынесен в отдельный файл в директории cogs/. Все коги регистрируются через setup(bot) и загружаются при старте.
Upper_Siberia_test.py — точка входа, инициализация БД, загрузка когов
config_command_names.py — все алиасы команд и тексты страниц !help
utils.py — вспомогательные функции, константы
embed_generation.py — фабрики embed-сообщений
map_render.py — рендер тактической карты (Pillow)
Коги
economy.py
Баланс, депозит, снятие, дейли, кража, штрафы, переводы, рейтинг.
budget.py
Государственные бюджеты структур, внесение и снятие средств.
passport.py
Выдача, продление, просмотр паспортов; проверка срока действия.
sidejob.py
Подработка с нарративными историями, раздельными по полу.
leveling.py
Система XP и уровней.
admin.py
Административные команды: деньги, аккаунты, мьюты, очистка, кулдауны.
battle.py
Тактическая боевая система: AP, укрытия, карта, ранения, боеприпасы.
prescript.py
Ежедневные предписания от Желания Города.
Схема базы данных
| Таблица | Назначение | Ключевые поля |
| accounts | Финансовые счета жителей | discord_id, cash, bank, last_daily |
| passports | Паспортные данные | discord_id, name, age, photo_url, issued_at, issued_by_id |
| fines | Штрафы (оплаченные и нет) | discord_id, user_fine_n, amount, reason, issued_by, paid |
| stats | Статистика жителей | discord_id, rob_count, robbed_count, fines_count |
| levels | Уровни и XP | discord_id, xp |
| inventory | Инвентарь | discord_id, item_key, quantity |
| rob_cooldowns | Защита жертв ограбления | discord_id, last_robbed_at |
| sidejob_cooldowns | Кулдаун подработки | discord_id, last_used_at |
| budgets | Бюджеты структур | structure, balance |
| budget_log | Лог бюджетных операций | structure, action, amount, actor_id, acted_at |
| mutes | Активные мьюты | discord_id, guild_id, unmute_at, saved_roles |
| mute_history | История мьютов | discord_id, issued_by_id, reason, duration_sec, muted_at |
| passport_request_cooldowns | Защита от повторных запросов паспорта | pair_key, denied_at |
Добавление новой команды
1. Выбрать или создать подходящий ког в cogs/.
2. Добавить алиасы в config_command_names.py — список ALIASES.
3. Импортировать список алиасов в kog через from config_command_names import ...
4. Декорировать функцию: @commands.command(aliases=ALIAS_LIST).
5. При необходимости добавить запись в HELP_PAGES в том же конфиге.
6. Перезапустить бота — изменения применяются автоматически.
Переменные окружения
Конфигурация хранится в файле .env рядом с точкой входа. Загружается через python-dotenv.
DISCORD_BOT_TOKEN — токен бота
ADMIN_ROLE_IDS — ID ролей администраторов через запятую
MAYOR_ROLE_ID — ID роли мэра
PASSPORT_CHANNEL_ID — ID канала мэрии для паспортных операций
Файл .env содержит токен бота. Не передавать третьим лицам. Не коммитить в публичные репозитории. В случае компрометации токена — немедленно регенерировать в Discord Developer Portal.