Перейти к содержанию

Как устроен CivBot

CivBot — бот в Discord, который ведёт игру Civilization V от кнопки на панели игры до треда игры и результата. Здесь показано, где появляются карточки и треды, кто их видит, что показывает и позволяет сайт CivBot и где искать игру, когда её карточка пропала из канала сбора игр.

Роль CivBot

Игра проходит через пять мест в Discord и на сайте:

  • Панель игры — игрок нажимает на ней «FFA» или «Duel» и приватно выбирает тип игры.
  • Карточка сбора — появляется в канале сбора игр; на ней игроки записываются, банят нации и нажимают «Готов».
  • Тред игры — во время старта карточка сбора исчезает, а в канале истории игр появляется публичный тред игры. В треде выбирают нации и записывают результат командой /игра завершить (/game finish). На сервере, с которым работает сайт, в тред можно бросить и файл сейва; подробнее — Сейв в треде игры.
  • Таблица лидеров — завершённая игра FFA меняет рейтинг игроков, и таблица лидеров показывает его после ближайшего почасового обновления.
  • Сайт CivBot — после входа через Discord там видны игры сервера, с которым работает сайт, страница каждой игры и профиль каждого игрока. Игрок игры может на сайте ещё и завершить игру, выбрать нацию и добавить сейв.
flowchart TD
    M(["Модератор"]) -- "ставит командой /moderator panel" --> P["Панель игры"]
    G(["Игрок"]) -- "нажимает «FFA» или «Duel»" --> P
    P -- "открывает сбор" --> C["Карточка сбора"]
    C -- "участник или модератор нажимает «Старт…»" --> T["Тред игры"]
    T -- "участник или модератор выполняет /игра завершить" --> R["Результат"]
    R -- "в FFA меняет" --> RT["Рейтинг"]
    RT -- "каждый час попадает в" --> L["Таблица лидеров"]
    T -- "игра появляется на" --> S["Сайт CivBot"]
    R -- "показывается на" --> S
    S -- "игрок игры завершает игру" --> R

Диаграмма показывает только главный путь игры: канала оповещений, журнала событий и приватных ответов бота на ней нет.

Из чего состоит

Место Что там видно Кто настраивает
Панель игры Кнопки «FFA», «Duel», «Статистика игрока», «Информация» и список последних игр Модератор командой /moderator panel
Канал сбора игр Карточки сборов с кнопками Администратор сервера командой /guild config
Канал истории игр Публичный тред каждой стартовавшей игры Администратор сервера командой /guild config
Тред игры Карточка игры, выбор наций и результат; на сервере, с которым работает сайт, — ещё и сейвы, которые бросили в тред Бот, во время старта игры
Канал таблицы лидеров Таблица лидеров текущего сезона Модератор командой /leaderboard show
Канал оповещений Оповещения о сборах, которым не хватает игроков Модератор командой /guild notifications configure
Журнал событий Записи о событиях сборов и игр Модератор командой /guild log_channel
Приватные ответы Меню и ответы, которые видите только вы —
Сайт CivBot «Обзор», «Игры», «Инспектор сейвов», страница игры и профиль игрока после входа через Discord —

Панель игры

Панель игры — сообщение, с которого начинается каждая игра. Модератор ставит её командой /moderator panel, и панель появляется в том канале, где он выполнил команду. На сервере панель одна: новая команда убирает предыдущую.

Кнопки панели доступны всем. «FFA» и «Duel» создают игру, а «Статистика игрока» приватно показывает статистику выбранного игрока. «Информация» приватно показывает карточку со строками «Канал истории игр: #…» и «Канал сбора игр: #…».

Над кнопками — список до 15 последних игр сервера, которые уже стартовали. В строке видны значок состояния, номер, режим, тип и игроки, а отметка «>>» ведёт в тред игры. Список обновляется каждые 5 минут, а также после старта, завершения или прерывания игры. Подробнее — Панель игры.

Канал сбора игр и канал истории игр

Когда игрок создаёт игру, карточка сбора появляется в канале сбора игр. Если панель стоит в другом канале, бот приватно отправляет ссылку на карточку, и эта ссылка исчезает через 60 с.

Во время старта карточка сбора исчезает. Игра получает номер, а в канале истории игр появляется её публичный тред с названием вроде «248 — FFA 6 Patch». В первом сообщении треда бот упоминает всех игроков, и Discord добавляет их в тред. Тред остаётся в канале истории игр и после завершения или прерывания игры. Подробнее — Тред игры.

Таблица лидеров, оповещения и журнал событий

Таблицу лидеров модератор ставит командой /leaderboard show: она появляется в том канале, где он выполнил команду, а предыдущая исчезает. Каждый час бот обновляет таблицу. В ней до 15 участников сервера с самым высоким рейтингом среди тех, кто в текущем сезоне сыграл хотя бы одну завершённую игру FFA. Подробнее — Таблица лидеров.

Канал оповещений модератор задаёт командой /guild notifications configure. Туда приходят оповещения, которые участник сбора или модератор отправляет кнопкой «Оповестить о сборе» на карточке сбора. Заголовок оповещения, например «+3 FFA6 Сбор», ведёт на карточку сбора. Подробнее — Оповещение о сборе.

Журнал событий модератор включает командой /guild log_channel, указав канал. Бот записывает туда создание игры, вход и выход игроков, исключение игроков, отмену сбора и прерывание игры, обмен слотами и оповещения о сборе. Старт и завершение игры в журнал не попадают. Кто читает журнал, зависит от прав этого канала в Discord. Подробнее — Журнал событий.

Сайт CivBot

Сайт показывает игры, ведёт страницу каждой игры и профиль каждого игрока и разбирает сейвы Civilization V. Без входа открыта главная страница: на ней видна витрина экранов сайта, и можно посмотреть сейв в сокращённом виде. Список игр, страница игры и профиль игрока без входа ведут на вход через Discord. Войти можно кнопкой «Войти через Discord»: сайт запрашивает у Discord только базовые данные аккаунта, без почты и списка серверов. После входа открываются три раздела:

  • «Обзор» — блоки «Мои последние игры», «Текущие игры» и «Последние результаты», а также «Ваша неделя», «Этот месяц» и «Таблица лидеров» сезона;
  • «Игры» — список игр сервера с выбором игроков и переключателем «Мои игры»; подробнее — Игры на сайте;
  • «Инспектор сейвов» — полный разбор файла .Civ5Save с графиками ход за ходом.

Поле «Искать игроков или номер игры…» в шапке работает на каждой странице: его открывает клавиша «/». Номер игры ведёт на страницу игры, имя игрока — на профиль.

Страницу игры и профиль игрока видит каждый, кто вошёл. Менять игру на сайте могут только её игроки, то есть те, у кого в ней есть место: завершить игру, выбрать нацию для места, прикрепить сейв, сопоставить игроков сейва и найти лобби в Steam. Модератор без места в игре на сайте только смотрит, а управляет игрой в Discord. Подробнее — Страница игры, Завершение игры на сайте, Сейвы игры на сайте.

«Обзор» показывает только игры сервера, с которым работает сайт, и только те, которые уже стартовали. Подробнее — Сайт CivBot.

Связь сайта с Discord

Это действует на сервере, с которым работает сайт. Под карточкой игры в треде есть кнопка «На сайте» (на карточке завершённой игры — «Результаты на сайте»), которая ведёт на страницу игры. Игру, завершённую на сайте, бот перерисовывает в треде. В меню приложений участника сервера есть пункт «Профиль на сайте»: бот приватно отправляет ссылку на профиль игрока. Подробнее — Профиль игрока.

С чем связано

  • Игра — проходит путь от карточки сбора до треда игры и результата; подробнее — Игра.
  • Роли — панель игры, каналы, таблицу лидеров и журнал настраивают модераторы и администраторы; подробнее — Игроки, модераторы и администраторы.
  • Подключение бота — каналы сбора и истории игр задают, когда бота подключают к серверу; подробнее — Подключение CivBot к серверу.
  • Рейтинг — завершённая игра FFA меняет рейтинг, а таблица лидеров его показывает; подробнее — Как считается рейтинг.

Правила

Публичные сообщения видят все, приватные ответы — только адресат

Панель игры, карточку сбора, тред игры, таблицу лидеров и оповещения видит каждый, у кого есть доступ к их каналу. Статистика из команды /stats show тоже публичная: она появляется в канале.

Приватный ответ видит только тот, кому бот его отправил. Приватно приходят:

  • сообщение «Выберите тип игры» после кнопок «FFA» или «Duel»;
  • меню, которые открывают кнопки «Баны» и «Выгнать»;
  • ответы на кнопки «Статистика игрока» и «Информация» панели игры;
  • отказы вроде «У вас нет доступа к этому действию.» и ответы на /игра завершить.

Часть приватных ответов исчезает сама: например, ссылка на новую карточку сбора — через 60 с. Подробнее — Лимиты и таймеры.

Публичные сообщения бот пишет на языке сервера

Карточки, панель игры, журнал событий и оповещения бот пишет на основном языке сервера в Discord. То, что человек открывает сам, приходит на языке его клиента Discord: сообщение «Выберите тип игры», меню кнопок «Баны» и «Выгнать» и ответы на кнопки «Статистика игрока» и «Информация». Отказы на кнопках карточки сбора и треда игры, например «У вас нет доступа к этому действию.» или «Эта игра завершилась или была удалена. Создайте новую игру.», приходят на языке сервера. Бот пишет на украинском, русском и английском, а когда язык сервера или клиента Discord другой — на английском.

Некоторые надписи одинаковы на всех серверах: у таблицы лидеров заголовок «Топ игроков» всегда на русском, названия столбцов «Rating», «Wins» и «Games» — на английском, а /игра завершить отвечает на английском «Done!». В русском клиенте Discord переведены только названия /игра завершить и /игра обновить (/game refresh), остальные команды имеют только английские названия. У сайта есть собственное меню языка с пунктами «English», «Українська» и «Русский». Подробнее — Язык бота.

Что может пойти не так

  • Карточка сбора пропала из канала сбора игр. Если игра стартовала, ищите её тред в канале истории игр: название треда начинается с номера игры. Если сбор отменили или 3 часа никто не нажимал его кнопки, создайте новую игру на панели игры.
  • Вы не знаете, где канал сбора игр и канал истории игр. Нажмите «Информация» на панели игры: в приватной карточке названы оба канала.
  • Тред игры пропал из списка каналов. Тред, в котором сутки никто не писал, архивируется, а игра от этого не меняется. Найдите его среди архивных тредов канала истории игр: название треда начинается с номера игры.
  • Таблица лидеров не изменилась после игры. Таблица обновляется раз в час. Рейтинг меняют только завершённые игры FFA, а игра Duel и прерванная игра его не меняют.
  • Игры нет на сайте. Сайт показывает только игры сервера, с которым он работает, и только те, которые уже стартовали. Блок «Мои последние игры» показывает до 3 ваших самых новых игр. «Текущие игры» учитывают до 20 игр, которые стартовали за последние 48 часов и ещё идут: в блоке видны 5 из них, а остальные подписаны строкой вроде «Ещё 3 игры в процессе». «Последние результаты» показывают до 10 последних игр, которые завершились или были прерваны. «Обзор» не обновляется сам: перезагрузите страницу, чтобы увидеть новую игру.

См. также

Эта страница переведена с помощью ИИ и сверена с терминами бота.