Зеркалирование сообщений в Discord
Зеркалирование сообщений в Discord копирует сообщения чата в канал Discord прямо по ходу переписки. Оно работает в режимах Conversation, Roleplay и Game.
Это односторонняя передача. Marinara отправляет сообщения, а Discord ничего не может отправить обратно, поэтому это не двусторонний бот. Зеркало работает через вебхук Discord – специальный адрес URL, по которому одно приложение может публиковать сообщения в канале Discord. Зеркало настраивается отдельно для каждого чата. У каждого чата свой адрес вебхука, и в остальных чатах зеркало остается выключенным, пока вы не вставите адрес в каждом из них.
Создание адреса вебхука Discord
Вебхук создается в Discord, а не в приложении Marinara. Для этого нужны права на управление тем каналом Discord, который вы хотите использовать.
- Откройте свой сервер Discord и выберите канал, где должны появляться сообщения.
- Откройте настройки этого канала, затем раздел Integrations (интеграции), затем Webhooks (вебхуки).
- Создайте новый вебхук и скопируйте его адрес.
Адрес вебхука Discord выглядит так:
https://discord.com/api/webhooks/123456789012345678/AbCdEf-example-tokenНикому не показывайте этот адрес. Публиковать сообщения в вашем канале Discord может любой, у кого он есть.
Включение зеркала
Поле для вебхука находится в настройках каждого чата, в разделе Connected Chats (связанные чаты). Оно подписано Discord Mirror (зеркалирование в Discord), а его подсказка в поле – https://discord.com/api/webhooks/....
- Откройте чат, который нужно зеркалировать.
- Откройте Chat Settings (настройки чата).
- Найдите раздел Connected Chats.
- Вставьте адрес вебхука в поле ввода в нижней части этого раздела.
Теперь зеркало для этого чата включено. Чтобы выключить его, очистите поле.
Если не получилось: когда адрес не является правильным вебхуком Discord, под полем появляется красная надпись "Invalid webhook URL format". Исправьте адрес, и зеркало сохранится. При сохранении Marinara проверяет адрес еще раз на сервере.
Адрес вебхука остается в этой установке Marinara. Экспорт чатов, экспортированные профили настроек и файлы Export Profile (экспортировать профиль) его не содержат, и импорт любого из них никогда не включает зеркало. Чтобы зеркалировать чат, перенесенный в другую установку, вставьте адрес там заново. Профиль настроек, сохраненный в этой установке, по-прежнему задает зеркало, когда вы его применяете.
Что отправляется
Marinara зеркалирует ваши сообщения и ответы ИИ по мере их генерации.
- Имя отправителя: ваши сообщения идут под именем активной персоны, а сообщения ИИ – под именем персонажа.
- В режиме Game Mode ходы участников отряда и персонажей NPC (неигровых персонажей) отправляются под именем "Party". Повествование отправляется под именем "Narrator". Если в игре включен вариант Character GM, ответы ведущего игры идут под именем этого персонажа.
- Картинки не отправляются. Discord показывает только имя отправителя и текст.
- Длинные сообщения: Discord ограничивает каждое сообщение 2000 символами. Сообщение длиннее 1997 символов сокращается, а его копия в Discord заканчивается на "...".
- Упоминания вида @everyone или @here внутри текста никого не уведомляют в вашем канале Discord.
Что не отправляется
- Ответы, сгенерированные заново, и свайпы повторно не зеркалируются. Свайп – это другой вариант ответа, сохраненный в том же сообщении. Отправляется только первый ответ на каждый ход.
- Сообщения, написанные за вас, не зеркалируются. Impersonate – это функция, при которой ИИ пишет сообщение вместо вас.
- Неудачная отправка не повторяется. Отправка, на которую Discord ответил ограничением частоты (429), тоже не повторяется, см. ниже. Неудачная отправка не показывает ошибку в чате. Сбои, кроме ограничения частоты, фиксируются только на сервере.
Ограничение частоты отправки
Discord ограничивает частоту публикаций для приложений. Marinara отправляет не более одного сообщения примерно раз в 1,2 секунды на каждый вебхук – это около 50 сообщений в минуту. Остальные сообщения ждут в очереди и уходят по порядку. Если Discord отвечает на отправку кодом 429 (сбавьте темп), это сообщение повторно не отправляется. Marinara выжидает время Retry-After, которое указывает Discord, а затем продолжает со следующим сообщением в очереди.
Смежные руководства
- Связь чата Conversation с чатом Roleplay или Game