Добавить Strings and tags (RU)

Alexey 2025-12-19 11:04:43 +00:00
commit ee8cbf2e71

@ -0,0 +1,399 @@
# Обзор
Практически все строки, которые использует бот, хранятся в файле с форматом [TOML](https://toml.io) (обычно `strings.toml`).
Эти строки, в зависимости от контекста, могут содержать различные теги.
Теги используются для подстановки данных в строку во время работы программы.
Как правило, строки используются для ответа на команду.
## Контекст и теги
В зависимости от выполняемой команды, форматировщик строк может обладать различным контекстом.
Передаваемый контекст предоставляет различные теги для использования в строках.
### Глобальный контекст
Глобальный контекст может использоваться во всех строках и предоставляет следующие теги:
- `{n}`: Переход на новую строку (`\n`)
- `{v}`: Версия программы (напр. `0.10.0`)
- `{url}`: Строка `url` из файла строк (предполагается, что это ссылка на веб карту)
- `{pt}`: Строка `points` из файла строк. Название "валюты" для очков, автоматически подставляется в контексте награды или баланса
### Контекст квеста
Предоставляет теги для доступа к полям квеста:
- `{q.id}`: Идентификатор квеста (напр. `#0`)
- `{q.difficulty}`: Сложность квеста, значение подставляется из таблицы `difficulty` в файле строк в зависимости от самой сложности
- `{q.reward}`: Награда за квест (напр. `50 {pt}`)
- `{q.name}`: Название квеста
- `{q.description}`: Описание квеста
- `{q.answer}`: Ожидаемый ответ на квест, следует использовать только в командах администратора
### Контекст пользователя
Предоставляет теги для обращения к пользователю:
- `{u.mention}`: Пинг пользователя (напр. `@Second Beam`)
- `{u.name}`: Глобальное имя пользователя (напр. `Second Beam`)
*примечание:* `{u.name}` *не учитывает имя пользователя в гильдии*
### Контекст текущего баланса
Предоставляет тег текущего баланса пользователя, то есть без учёта разблокированных комнат:
- `{b.current}`: Текущий баланс пользователя (напр. `50 {pt}`)
### Контекст полного баланса
Предоставляет теги баланса пользователя с учётом разблокированных комнат:
- `{b.current}`: Текущий баланс пользователя (напр. `50 {pt}`)
- `{b.rooms}`: Суммарная стоимость разблокированных пользователем комнат (напр. `50 {pt}`)
- `{b.full}`: Сумма текущего баланса пользователя и стоимости комнат (напр. `100 {pt}`)
### Контекст сообщения
Предоставляет теги для получения доступа к сообщению:
- `{m.link}`: Ссылка на сообщение
- `{m.id}`: Идентификатор сообщения, используемый в социальных командах
- `{m.channel}`: Канал, в который было отправлено сообщение
### Частный контекст
Иногда команды предоставляют теги `{value}` и/или `{text}`, которые могут содержать любое значение. Для работы с ними необходимо прочитать документацию строки, в которой используется тег.
## Строки
Значения по умолчанию можно найти [здесь](https://2ndbeam.ru/git/2ndbeam/squad-quest/wiki/strings.toml-%28EN%2C-default%29).
Также есть [пример](https://2ndbeam.ru/git/2ndbeam/squad-quest/wiki/strings.toml-%28RU%29) со строками, переведёнными на русский язык.
#### `url`:
Строка, передаваемая в тег `{url}`
Контекст: глобальный
Пример: `https://2ndbeam.ru/sq/map`
#### `points`:
Строка, передаваемая в тег `{pt}`
Контекст: глобальный
Пример: `points`
#### `info`:
Ответ на команду `/info` (`/инфо`)
Контекст: глобальный
Пример: `SquadQuest version {v}{n}Find the map here: {url}`
#### `init_reply`:
Ответ на команду `/init` (`/инит`)
Контекст: глобальный
Пример: `Updated linked channels and guild.`
#### `timer_reply`:
Ответ на команду `/timer` (`/таймер`)
Контекст:
- глобальный
- `{value}`: Время, на которое выставлен таймер (напр. `9:00:00`)
Пример: `Set daily timer on {value}.`
___
*примечание: строки ниже находятся во вложенных таблицах и обращение к ним в документации осуществляется как `таблица.строка`, напр. `account.reset`.*
### `[account]`
#### `reset`:
Ответ на команду `/reset` (`/сброс`)
Контекст:
- глобальный
- пользователь, чей аккаунт был сброшен
Пример: `Reset {u.name} account`
#### `give_pt`:
Ответ на команду `/balance give` (`/баланс передать`)
Контекст:
- глобальный
- пользователь, которому были переданы очки
- текущий баланс текущего пользователя
- `{value}`: количество переданных очков
Пример: `Given {value} {pt} to {u.name}{n}Your current balance: {b.current}`
#### `set_pt`:
Ответ на команду /balance set (`/баланс установить`)
Контекст:
- глобальный
- пользователь, чей баланс был изменён
- текущий баланс пользователя
Пример: `Set {u.name} balance to {b.current}`
### `[answer]`
#### `from`:
Шаблон ответа: кто прислал ответ (см. [команда `/answer`](https://2ndbeam.ru/git/2ndbeam/squad-quest/wiki/Discord-Commands-%28RU%29#%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8C-%D0%BD%D0%B0-%D0%BA%D0%B2%D0%B5%D1%81%D1%82))
Контекст:
- глобальный
- пользователь, отправивший ответ
- квест, на который отправлен ответ
Пример: `## From: {u.mention}{n}`
#### `quest`:
Шаблон ответа: информация о квесте (см. [команда `/answer`](https://2ndbeam.ru/git/2ndbeam/squad-quest/wiki/Discord-Commands-%28RU%29#%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8C-%D0%BD%D0%B0-%D0%BA%D0%B2%D0%B5%D1%81%D1%82))
Контекст:
- глобальный
- пользователь, отправивший ответ
- квест, на который отправлен ответ
Пример: `### Quest {q.id}: {q.name}{n}`
#### `expected`:
Шаблон ответа: ожидаемый ответ (см. [команда `/answer`](https://2ndbeam.ru/git/2ndbeam/squad-quest/wiki/Discord-Commands-%28RU%29#%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8C-%D0%BD%D0%B0-%D0%BA%D0%B2%D0%B5%D1%81%D1%82))
Контекст:
- глобальный
- пользователь, отправивший ответ
- квест, на который отправлен ответ
Пример: `### Expected answer:{n}||{q.answer}||`
#### `text`:
Шаблон ответа: текст ответа (см. [команда `/answer`](https://2ndbeam.ru/git/2ndbeam/squad-quest/wiki/Discord-Commands-%28RU%29#%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8C-%D0%BD%D0%B0-%D0%BA%D0%B2%D0%B5%D1%81%D1%82))
Контекст:
- глобальный
- пользователь, отправивший ответ
- квест, на который отправлен ответ
- `{text}`: текст ответа
Пример: `{n}### Passed answer:{n}{text}`
#### `attachment_notice`:
Шаблон ответа: примечание о том, что ответ содержит вложение (см. [команда `/answer`](https://2ndbeam.ru/git/2ndbeam/squad-quest/wiki/Discord-Commands-%28RU%29#%D0%BE%D1%82%D0%B2%D0%B5%D1%82%D0%B8%D1%82%D1%8C-%D0%BD%D0%B0-%D0%BA%D0%B2%D0%B5%D1%81%D1%82))
Контекст:
- глобальный
- пользователь, отправивший ответ
- квест, на который отправлен ответ
Пример: `{n}Passed answer has attachments.`
#### `accepted_by`:
Форматирует текст ответа с указанием администратора, подтвердившего ответ
Контекст:
- глобальный
- пользователь, подтвердивший ответ
- `{text}`: предыдущий текст сообщения с ответом
Пример: `{text}{n}Accepted by: {u.mention}`
#### `rejected_by`:
Форматирует текст ответа с указанием администратора, отклонившего ответ
Контекст:
- глобальный
- пользователь, отклонивший ответ
- `{text}`: предыдущий текст сообщения с ответом
Пример: `~~{text}~~{n}Rejected by: {u.mention}`
### `[answer.reply]`
#### `initial`:
Ответ на команду `/answer` (`/ответить`)
Контекст:
- глобальный
- пользователь, отправивший ответ
- квест, на который отправлен ответ
Пример: `Your answer has been posted.`
#### `accepted`:
Сообщение, приходящее пользователю в ЛС, если его ответ на квест был принят
Контекст:
- глобальный
- выполненный квест
- пользователь, подтвердивший ответ
- текущий баланс пользователя
Пример: `Your answer to the quest {q.id} has been approved.{n}You gained: {q.reward}{n}Your current balance is {b.current}`
#### `rejected`:
Сообщение, приходящее пользователю в ЛС, если его ответ на квест был отклонён
Контекст:
- глобальный
- пользователь, отклонивший ответ
- квест, на который был отправлен ответ
- текущий баланс пользователя
Пример: `Your answer to the quest {q.id} has been rejected.`
#### `error`:
Сообщение, приходящее пользователю в ЛС, если его ответ приняли, но возникла ошибка.
Контекст:
- глобальный
- пользователь, подтвердивший ответ
- квест, на который был отправлен ответ
- текущий баланс пользователя
Пример: `Your answer to the quest {q.id} has been approved, but some server error happened. Please contact administrator for details.`
### `[difficulty]`
#### `easy`:
Текст лёгкой сложности
Контекст:
- глобальный
Пример: `Easy`
#### `normal`:
Текст средней сложности
Контекст:
- глобальный
Пример: `Normal`
#### `hard`:
Текст тяжёлой сложности
Контекст:
- глобальный
Пример: `Hard`
#### `secret`:
Текст секретной сложности
Контекст:
- глобальный
Пример: `Secret`
### `[map]`
#### `room_unlocked`:
Ответ на команду `/unlock` (`/открыть`)
Контекст:
- глобальный
- пользователь, открывший комнату
- полный баланс пользователя
- `{value}`: идентификатор открытой комнаты
Пример: `Unlocked room #{value}. Your balance: {b.current}`
#### `moved_to_room`:
Ответ на команду `/move` (`/пойти`)
Контекст:
- глобальный
- переместившийся пользователь
- `{value}`: идентификатор новой комнаты
Пример: `Moved to room #{value}`
### `[scoreboard]`
#### `header`:
Заголовок таблицы лидеров
Контекст:
- глобальный
Пример: `Current scoreboard:`
#### `line_format`:
Строка таблицы лидеров
Контекст:
- глобальный
- пользователь
- полный баланс пользователя
Пример: `{n}{u.name}: **{b.full}** (**{b.current}** on balance+ **{b.rooms}** unlocked rooms networth)`
#### `you_format`:
Форматирование строки в таблице лидеров, если это строка пользователя, вызвавшего команду
Контекст:
- глобальный
- пользователь
- полный баланс пользователя
- `{text}`: текст строки `line_format`
Пример: `__{text}__ << You`
### `[social]`
#### `sent_channel`:
Ответ на команду `/social msg channel` (`/сообщение отправить канал`)
Контекст:
- глобальный
- отправленное сообщение
Пример: `Sent {m.link} ({m.id}) to {m.channel}`
#### `sent_dm`:
Ответ на команду `/social msg user` (`/сообщение отправить пользователь`)
Контекст:
- глобальный
- отправленное сообщение
- пользователь, кому было отправлено сообщение
Пример: `Sent {m.link} ({m.id}) to {u.mention}`
#### `edited`:
Ответ на команду `/social edit` (`/сообщение редактировать`)
Контекст:
- глобальный
- изменённое сообщение
Пример: `Edited message {m.id}`
#### `deleted`:
Ответ на команду `/social undo` (`/сообщение удалить`)
Контекст:
- глобальный
- удалённое сообщение
Пример: `Deleted message {m.id}`
### `[quest]`
#### `list`:
Заголовок ответа на `/quest list` (`/квест список`)
Контекст:
- глобальный
- `{value}`: количество квестов
Пример: `Listing {value} quests:`
#### `list_item`:
Строка квеста в ответе на `/quest list` (`/квест список`)
Контекст:
- глобальный
- квест
Пример: `{n}{q.id}: {q.name}{n} Description: {q.description}`
#### `create`:
Ответ на команду `/quest create` (`/квест создать`)
Контекст:
- глобальный
- созданный квест
Пример: `Created quest {q.id}`
#### `update`:
Ответ на команду `/quest update` (`/квест обновить`)
Контекст:
- глобальный
- обновлённый квест
Пример: `Updated quest {q.id}`
#### `publish`:
Ответ на команду `/quest publish` (`/квест опубликовать`)
Контекст:
- глобальный
- опубликованный квест
Пример: `Published quest {q.id}: {text}`
#### `delete`:
Ответ на команду `/quest delete` (`/квест удалить`)
Контекст:
- глобальный
- `{q.id}`: идентификатор удалённого квеста
Пример: `Deleted quest {q.id}`
*примечание: помимо* `{q.id}`, *другие теги контекста квеста недоступны в этой команде*
#### `message_format`:
Формат сообщения квеста в канале квестов
Контекст:
- глобальный
- квест
Пример: ```### `{q.id}` {q.name} (+{q.reward}){n}Difficulty: *{q.difficulty}*{n}{q.description}```
#### `message_not_found`:
Предупреждение в команде `/quest update` (`/квест обновить`), если он был опубликован и его сообщение не было найдено
Контекст:
- глобальный
- опубликованный квест без сообщения
Пример: `Warning: quest {q.id} message not found`