Это перевод. Если он и английская версия когда-нибудь разойдутся, действует английская версия.
Политика конфиденциальности
Последнее изменение: 19 октября 2026 г..
Что хранится
Конфигурация сервера, которую вы задаёте через команды бота: ID каналов и ролей, пороговые значения, переключатели и текст, который вы вводите в настройку — префикс команд, список запрещённых слов, текст панели проверки, фраза, запускающая плановую очистку канала, ID пользователей, которых вы исключаете из фильтра. Записи модерации: номер случая, кто действовал, против кого, причина, которую вы написали, и когда. Там, где это нужно функции, — ID сообщений или каналов, которые она создала, чтобы потом ими управлять.
Текст конфигурации хранится так, как вы его написали, — намеренно: ваши модераторы должны иметь возможность прочитать, что сервер настроен делать. Это не чьи-то личные слова о себе, а правила вашего сервера, написанные теми, кто им управляет.
Счётчики активности — с момента добавления бота. Сколько сообщений отправил каждый участник, сколько минут он провёл в голосовом канале, насколько оживлён каждый канал, почасовой итог по серверу и запись о том, кто зашёл или вышел и по какому приглашению. Если включена ретрансляция через вебхук — сколько раз она публиковала заблокированные сообщения участника заново и когда в последний раз. Это счётчики и метки времени, и больше ничего: нигде нет строки о том, что кто-то сказал, в каком канале или в какой момент. Посуточная разбивка, из которой суммируются таблицы лидеров, удаляется через 120 дней, а история входов и выходов — через 400 дней.
Подсчёт включён с того момента, как бот появился на сервере, в отличие от большей части того, что он умеет: история, которая начинается тогда, когда кто-то догадался найти настройку, — это история, которой никто не может доверять, а непосчитанный месяц не вернуть. Выключить подсчёт можно одной строкой — /logs activity со значением off — он остановится сразу, а /stats продолжит показывать то, что было записано до этого.
Это не единственное, что включено, когда бот заходит на сервер, хотя эта страница раньше утверждала обратное. Текстовые команды, журнал модерации, лестница наказаний, розыгрыши, snipe, AFK и языковая настройка бота тоже включены сразу; страница документации перечисляет их рядом со всеми остальными модулями и отмечает, какой из них какой. Из них snipe и AFK хранят что-то об участнике: snipe — в памяти, а не в базе данных, AFK — только после того, как участник сам его включит; абзац ниже точно говорит, что именно и как долго.
AFK — только если участник его включил. То, что он отошёл, причина, которую он написал, когда он отошёл, никнейм, который бот заменил, чтобы потом вернуть, и ссылки на до десяти сообщений, в которых его упомянули, пока он отсутствовал, — какое сообщение, в каком канале, кто написал и когда, но никогда не текст сообщения. Всё это удаляется, когда участник в следующий раз что-то напишет там, где это засчитывается (сервер может перечислить каналы, где не засчитывается), когда он покинет сервер или по команде /afk remove — и в любом случае через тридцать дней. Сервер может отключить хранение упоминаний.
Что бот сделал из аккаунта, когда тот зашёл. Если включена проверка новых участников — выставленная оценка, уровень, сработавшие признаки, всё, что бот сделал сам, и что решил модератор потом. Это хранится для того, чтобы у вопроса «почему меня выгнали» был ответ, а не реконструкция, и потому что «заходил ли этот аккаунт сюда и выходил ли раньше» — признак, для которого должна существовать история. Удаляется через 90 дней: суждение о ком-то — не то же самое, что действие модерации, к которому оно привело, и только второе является записью.
Что люди отправляют в функцию и что функция из этого сделала. Апелляции на баны и голосование персонала по ним; заявки в команду, ответы на них и голосование; тикеты, ответы в них и оценка, оставленная при закрытии; участие в розыгрышах; записи на события и посещаемость; ранги гильдии, составы, заметки персонала и причины вкладов; отзывы, которые кто-то написал о вашем сервере; партнёрские заявки и их описание. Четыре поля из этого списка, в которых слова написаны с расчётом на конфиденциальность, шифруются — раздел ниже называет их точно.
Резервные копии сервера, если кто-то их делает. /backup save сохраняет структурный снимок сервера, чтобы его можно было восстановить: названия и права ролей, названия каналов, темы и переопределения прав, категории, метаданные эмодзи и стикеров и список банов с написанными к ним причинами. Сообщений в нём нет. Это собственная структура вашего сервера, хранящаяся там, где вы велели боту её хранить, а /backup delete полностью удаляет ячейку.
Сообщения, которые ваш персонал собирает командой /message. Незаконченный черновик (отбрасывается через неделю без изменений), сохранённые шаблоны, сообщения, запланированные на потом, и запись о каждой публикации, чтобы её можно было редактировать, — забывается через 90 дней без правок. Это текст, который ваш персонал написал для отправки ботом, с указанием автора; ничего из того, что сказал участник.
Приветствия вашего сервера. Приветственное сообщение, прощальное сообщение и приветственное личное сообщение, которые ваш персонал собрал, текст на приветственных и прощальных карточках и фоновая картинка, если она была загружена для карточки, — хранится как картинка, которую бот перерисовал из загруженной, поэтому от исходного файла остаются только его пиксели. Чтобы нарисовать карточку, бот в этот момент берёт у Discord аватар входящего или уходящего участника и ничего из него не сохраняет.
Уровни, если сервер их включит. При включённом модуле «Уровни» бот хранит одно число на участника — XP, заработанный из сообщений и времени в голосовых каналах, — и время его последнего изменения, и больше ничего: никакой записи о том, что было сказано или где. Из этого числа вычисляются уровень и место. Оно хранится, пока бот на сервере, даже после ухода участника, чтобы его наградные роли могли вернуться, если он вернётся; оно удаляется вместе с остальными данными сервера через тридцать дней после удаления бота. Если сервер оставляет свою публичную таблицу лидеров включённой — по умолчанию она включена, и один переключатель её выключает, — имя участника на сервере, аватар, уровень и XP показываются на публичной странице этого сайта любому, у кого есть ссылка. Имя и аватар берутся из Discord в момент отрисовки страницы и никогда не записываются в базу данных; отрисованная страница хранится меньше минуты, чтобы посещаемая таблица не обращалась к боту при каждом просмотре.
Записи рейдов, только когда антирейд обнаруживает рейд или персонал отмечает период. Какие аккаунты присоединились за это время и когда, сколько лет было каждому аккаунту, был ли у него аватар, ключ только из букв, составленный из имени пользователя, чтобы заметить группу похожих имён (само имя пользователя — никогда), что бот или модератор сделал с каждым (кик, бан, тайм-аут), был ли сервер заблокирован и сколько сообщений удалено. Никогда текст сообщения. Хранится 30 дн., не более 25 рейдов на сервер, и удаляется вместе со всем остальным, когда бот покидает сервер.
Предложения, если сервер их включит. Предложение хранит написанный текст, автора, место публикации карточки и — после ответа модерации — сам ответ, кто его дал и почему. Каждый голос — одна строка: какое предложение, какой участник, в какую сторону. Анонимное предложение всё равно записывает автора, потому что лимит на человека и пауза считаются по нему; нигде он не показывается. Всё это удаляется вместе с остальными данными сервера через тридцать дней после удаления бота. Предложение, отправленное через /suggest bot, касается самого бота, а не сервера: оно передаётся в канал сервера поддержки вместе с вашим именем, вашим ID и сервером-источником и не сохраняется вовсе.
Дни рождения, если участник их указал. /birthday ничего не хранит о человеке, пока он не назовёт дату. Тогда бот хранит указанные день и месяц; год — только если его назвали, в зашифрованном виде, тем же ключом, что и конфиденциальный текст ниже, и читает его лишь чтобы назвать возраст и только на сервере, который показывает возраст; часовой пояс из фиксированного списка; момент, когда начнётся следующий день рождения; и с какими серверами человек решил им поделиться — по одной записи на сервер, которую создаёт сам человек и никто другой. Модератор может убрать запись сервера, но никогда не может задать или прочитать дату, которой не поделились на его сервере. Младше 13 лет не хранится никто: год, из-за которого человек оказывается младше, отклоняется и ничего не сохраняется. Бот никогда не пишет человеку сам. /birthday remove стирает дату и записи всех серверов разом; запись сервера также удаляется, когда участник покидает этот сервер или когда данные сервера удаляются; а краткая запись о том, какие поздравления уже объявлены, удаляется через 400 дней.
Удаление дня рождения командой /birthday remove также сразу удаляет запись об объявленных поздравлениях этого человека, не дожидаясь истечения 400 дней.
Временные роли. Когда модератор выдаёт кому-то роль на время, бот хранит, у кого она, какая это роль, когда она заканчивается, кто её выдал и указанную им причину (не более 400 символов), пока роль не будет забрана. Роль, выданная на день рождения или за сбитый счёт, хранится так же, а выдавшим указан бот. Запись удаляется, когда роль забирают, когда участника банят и — если сервер не решил сохранить время до его возвращения — когда он уходит.
Счёт, если сервер настроил канал. Для каждого канала счёта бот хранит число, на котором остановились, кто считал последним, правила канала и для каждого участника, который там считал, сколько верных чисел он назвал и сколько раз сбил счёт — идентификаторы и числа, но никогда не то, что кто-либо написал. Сообщения в канале счёта читаются по мере поступления, чтобы их оценить, и не сохраняются. Всё это удаляется вместе с каналом, при остановке счёта в нём или вместе с остальными данными сервера через тридцать дней после удаления бота.
Modmail, только если сервер его включит. Когда участник отправляет боту личное сообщение, бот читает его и передаёт команде выбранного сервера в приватный канал, который выбрал этот сервер — любой, кто видит этот канал, может его прочитать, как и тот, кто видит лог-канал сервера, если туда публикуются расшифровки. Ответы команды приходят в личные сообщения участника; анонимный ответ скрывает отправителя от участника, но не от остальной команды. Бот не хранит никакого текста сообщений: он сохраняет идентификаторы, счётчики и время, какое личное сообщение соответствует какому сообщению в канале (удаляется через тридцать дней после закрытия ветки), причины, которые команда написала при закрытии или блокировке, и сохранённые ответы. Запись о закрытой ветке удаляется через число дней, заданное сервером, по умолчанию девяносто. Сам разговор и любые файлы расшифровок остаются в Discord этого сервера по его собственным правилам. Участник завершает разговор кнопкой Close this conversation под первым ответом бота, не даёт серверу начать его кнопкой Stop messages from this server или просто не пишет боту. Ни одна третья сторона ничего из этого не получает.
Магазин шаблонов. Если вы оцениваете шаблон, бот хранит идентификатор вашего аккаунта, звёзды и время. Если вы комментируете, он хранит идентификатор вашего аккаунта, отображаемое имя, которое у вас было тогда, текст и время; свой комментарий вы можете удалить сами, а владелец может его убрать. Жалоба хранит идентификатор вашего аккаунта и введённую вами причину. Чтобы оценить шаблон могли только те, кто им пользовался, бот хранит, какой шаблон вы применили, на каком идентификаторе сервера и когда, пока шаблон существует. Владелец читает каждый отправленный шаблон до того, как он попадёт в список, и каждый комментарий, ожидающий проверки, до того, как он появится; комментарий, по которому никто не принял решения, удаляется через 30 дн. Чтобы ограничить, как часто один аккаунт или один адрес может комментировать, жаловаться или оценивать, бот хранит хеш адреса с ключом — никогда не сам адрес — вместе с идентификатором аккаунта и временем; он удаляется через 30 дн. Шаблон, который вы ещё пишете, хранится запечатанным (зашифрованным) 7 дн. Чтобы удалить всё, что магазин хранит о вашем аккаунте, попросите об этом на сервере поддержки, и владелец выполнит удаление. Текст комментария — и только текст, без аккаунта, имени и шаблона — отправляется в конечную точку модерации OpenAI до публикации комментария, на условиях, описанных выше в разделе об OpenAI; комментарий, который она пометит или на который не ответит вовремя, придерживается для владельца вместо публикации. Если у бота нет ключа OpenAI, этот шаг пропускается, и остальные проверки действуют сами по себе.
Что не хранится никогда
Содержимое сообщений. Ничто в базе данных не хранит то, что люди говорят в ваших каналах, и из этого нет исключений — ни один столбец в базе данных не содержит опубликованное кем-то сообщение. Эта страница раньше называла стенограммы тикетов исключением, и это не так: стенограмма собирается из истории, которую хранит сам Discord, в тот момент, когда модератор её запрашивает, и публикуется обратно на ваш сервер файлом. Здесь от неё ничего не остаётся. Текст, который кто-то сознательно отправляет боту — апелляция на бан, заявка, форма при открытии тикета, комментарий к оценке, — хранится, потому что отзыв, который нельзя прочитать, — не отзыв; он зашифрован, а раздел ниже точно говорит, какие это поля. То же относится к причине, которую участник указывает в /afk, до его возвращения: она не зашифрована, потому что написана не с расчётом на конфиденциальность — она показывается всем, кто его упоминает.
Две вещи хранятся вне базы данных, и об обеих стоит сказать точно. Первая — snipe: /snipe показывает последнее удалённое или изменённое сообщение в канале, поэтому ему приходится его держать: по пять на канал, не дольше двух часов, в памяти. Ничего не записывается, перезапуск всё забывает, и это никогда не покидает процесс. Спросить может любой, кто может читать канал, — для этого команда и нужна, — и бот проверяет этот доступ в момент ответа, а не в момент удаления сообщения. Она не покажет сообщение, которое удалил сам бот, или то, что очищено массово, потому что snipe не должен стать способом прочитать модерацию задним числом. Серверу, которому нужно уже, достаточно ограничить её модераторами или полностью исключить каналы командой /logs snipe; модератор, только что что-то удаливший, очищает её сразу командой /snipe clear.
Вторая — счётчики защит. Anti-nuke, anti-raid, anti-spam и остальные принимают решения подсчётом — сколько каналов один модератор удалил за последнюю минуту, сколько аккаунтов зашло за последние тридцать секунд, — и эти значения каждые несколько секунд копируются в кэш Redis на той же машине, чтобы перезапуск бота не давал тому, кто на полпути к атаке, свежий запас. Копируются ID — сервера и задействованного участника или канала — и время событий, но никогда не то, что кто-то сказал: память anti-spam о недавних сообщениях остаётся в процессе, и перезапуск её забывает. Каждая копия истекает сама — в течение часа, большинство за минуты, — кэш никогда не пишет на диск, и достучаться до него может только сам бот — ни сайт, ни интернет. Во время обновления, когда новая копия бота принимает дела у старой, ID сообщений и взаимодействий, на которые старая копия ответила в последние секунды, проходят через тот же кэш не дольше тридцати секунд, чтобы ничто не было отвечено дважды. Одно в этом кэше хранится дольше часа: какие новые участники ещё ждут у какого-нибудь барьера — экрана правил Discord, проверки, карантина — роли, которые сервер выдаёт при входе, в виде ID сервера, ID участника и момента, когда ожидание истекает, не дольше суток, чтобы обновление не забыло их выдать.
IP-адреса. Бот никогда их не видит — Discord не раскрывает адрес участника боту, и здесь ничто этого не обходит. Единственное место, где адрес вообще читается, — проверка подключения на сайте, описанная далее, и он читается один раз и не сохраняется: не хранится, не пишется в логи, не хешируется. Украденная база данных не содержит адресов и ничего, что из них получено.
Голосовые сообщения, если кто-то просит записать их текстом. /transcribe скачивает это голосовое сообщение и превращает его в текст на собственном сервере бота с помощью модели распознавания речи, которая работает там же. Звук не уходит ни в какую другую компанию или сервис; он хранится только пока его слушают и удаляется сразу по окончании. Текст публикуется в канале, где использовали команду, и нигде больше не хранится — записи о том, что было сказано, не ведётся. Чтобы один человек не занял машину надолго, бот считает в памяти, сколько запросов за последние десять минут сделали каждый человек и каждый сервер; эти счётчики потом забываются, а перезапуск забывает их сразу.
Пять сторонних служб и что каждой передаётся
Большую часть своей жизни этот сайт мог говорить, что ни одна третья сторона никогда не видит ваших участников. Это перестало быть правдой, когда в модуле проверки появилась настройка Refuse VPNs and proxies (отклонять VPN и прокси): принадлежит ли адрес VPN — факт, который знает только репутационная служба. Каждая из пяти служб ниже выключена, пока сервер её не включит, а когда она включена, то, что описано дальше, — это всё, что происходит.
proxycheck.io. Участнику, к которому применяется настройка, выдаётся одноразовая ссылка на страницу этого сайта. Когда он нажимает на ней кнопку, адрес подключения один раз отправляется в proxycheck.io с вопросом «это VPN, прокси или диапазон хостинга» и больше ничем — ни имени пользователя, ни сервера, ни ID аккаунта. Ответ читается ради этого единственного бита и отбрасывается. Бот, который знает, кто этот участник, никогда не получает адрес; сайт, который видел адрес, никогда не узнаёт, кто этот участник. После этого остаётся только отметка времени в записи проверки участника о том, что подключение было чистым, а при отказе не остаётся вообще ничего.
Cloudflare Turnstile. По желанию та же страница несёт виджет Turnstile от Cloudflare, чтобы скрипт не мог нажать кнопку. Скрипт этого виджета — единственное, что этот сайт когда-либо загружает с другого источника, и только на этой странице, а Content-Security-Policy этого сайта по-прежнему запрещает это везде, кроме неё. Его ответ проверяется в Cloudflare без приложенного адреса. Turnstile не заменяет капчу внутри Discord, которая по-прежнему рисуется в процессе бота.
OpenAI. Это самая крупная из трёх и та, которой передаётся то, что публикуют люди, поэтому стоит сказать точно. Сервер может включить AI image scan (ИИ-проверку изображений), при которой модель решает, содержит ли картинка сексуальный контент, жестокость, насилие или самоповреждение. Никакой список ключевых слов не читает картинку, и версии, которая работала бы на наших собственных машинах, нет — это единственная причина, по которой она вообще здесь.
Когда сервер её включил, каждое изображение, опубликованное в проверяемом канале, отправляется в конечную точку модерации OpenAI как ссылка на это изображение на серверах самого Discord и ничего больше — ни набранного кем-то текста, ни имени пользователя, ни ID аккаунта, ни названия сервера, ни названия канала. Это касается загрузок и, если сервер оставил это включённым, картинки, которую Discord показывает под ссылкой. Ответ приходит в виде оценки по каждой категории, читается, чтобы решить, нарушает ли изображение правила этого сервера, и отбрасывается. Ничего из него здесь не записывается, а само изображение никогда не хранится в нашей базе данных.
Что OpenAI делает с этим — их словами, а не нашими. В их документации сказано, что данные, отправленные в API, «не используются для обучения или улучшения моделей OpenAI», если вы явно не согласитесь, и мы не соглашались. Там же сказано, что журналы мониторинга злоупотреблений «могут содержать определённый клиентский контент, например запросы и ответы» и по умолчанию «хранятся до 30 дней». Поэтому честная версия не в том, что изображение исчезает в момент проверки: мы не храним от него ничего, а OpenAI может держать его до тридцати дней, чтобы следить за собственным сервисом. Серверу, который не согласен на это, следует оставить этот модуль выключенным, — именно так он и поставляется.
Он выключен, пока администратор не включит модуль. Сервер может исключить роли, пропускать целые каналы или проверять только некоторые, проверять только новых участников и пропускать собственных модераторов, а описание модуля прямо говорит, что включение отправляет изображения за пределы сервера. Выключите модуль — и ничего больше не отправляется.
Два честных ограничения. Он хорошо справляется с общим вредом и не знает, как выглядит угроза вашему серверу — организуемый рейд, мошенничество, реклама, — потому что таких категорий у модели нет, и текст она не читает вообще. А в документации OpenAI сказано, что эта конечная точка не предназначена для обнаружения материалов сексуального насилия над детьми и не заменяет специальные меры защиты детей; здесь не утверждается обратного, и путь для такого сообщения остаётся за Discord.
Больше ничего не загружается. Ни аналитики, ни сервиса шрифтов, ни скрипта или таблицы стилей из чьей-либо CDN: ни одна страница, кроме проверки подключения, ничего не берёт с другого источника, и это обеспечивается Content-Security-Policy, а не обещанием. Cloudflare стоит перед сайтом как его сеть — он видит запросы, которые видит любая сеть перед сайтом, и благодаря ему сайт выдерживает наплыв запросов, — но о ваших участниках ему ничего не передаётся, потому что на страницах нет ничего о ваших участниках.
YouTube и Twitch. Сервер может следить за каналом YouTube или стримером Twitch с помощью /alerts, и тогда бот каждые несколько минут спрашивает службу, нет ли чего-то нового. В YouTube он отправляет один запрос на публичную RSS-ленту канала, в котором назван только публичный id этого канала. В Twitch он отправляет публичный логин стримера — вместе с другими, до ста в одном запросе — подписанный собственным приложением Twitch этого бота, но никогда не аккаунтом участника. Ни участник, ни название сервера или канала ни в одну из них не передаются, и ни одна не узнаёт, какой сервер за кем следит. Ответ читается ради самого нового видео или id, названия и игры прямого эфира и отбрасывается. Сохраняется канал или логин, за которым сервер решил следить, место публикации и id последнего объявленного, чтобы ничего не объявлялось дважды. Обе службы выключены, пока сервер не добавит отслеживание, а удаление отслеживания прекращает запросы.
Спонсорская строка
Те, кто поддерживает этого бота, могут задать одну спонсорскую ссылку: короткую строку с пометкой При поддержке, текст и адрес которой выбирают они, а оплачивает тот, на кого она ведёт. Она появляется в подвале этого сайта и время от времени под одним из ответов бота на сервере без премиума: не чаще одного раза в 45 минут на одном сервере, только после как минимум 6 других ответов там и никогда под действием модерации, предупреждением, личным ответом или сообщением с кнопками. Премиум-серверы никогда не видят её в Discord. Сайт не знает, кто его читает, поэтому подвал показывает её каждому посетителю.
Это ссылка и ничего больше. Ничего не загружается от спонсора и ничего ему не отправляется. Чтобы соблюдать правило выше, бот хранит в памяти — никогда в базе данных — когда каждый сервер последний раз видел строку и сколько ответов там вышло с тех пор, а также общий счётчик показов; ни один человек не записывается, и спонсор ничего из этого не видит. Бот не записывает клики и не делает переадресаций, а ссылка не передаёт реферер с этого сайта. Нажав на неё, вы переходите на их сайт, где действуют их собственные правила. Текст спонсора показывается так, как он его написал, и не переводится. Если спонсор не задан, строки нет нигде.
Ничего из этого не хранится долго. Запись о сервере забывается через 24 часа после его последнего ответа. Одновременно хранится не более 20 000 серверов; когда место заканчивается, выпадает тот, от которого дольше всего ничего не было. Всё это, включая общий счёт, пропадает при каждом перезапуске бота.
Премиум-токены и ваш аккаунт
Премиум по аккаунту — одна строка: ваш id в Discord, месячный он или пожизненный, когда заканчивается, откуда взялся и сколько дополнительных переносов сервера вы купили. Токен хранится только как хеш с ключом от самого себя, поэтому в базе нет ничего, что можно превратить обратно в токен; токен существует в ответе владельцу при выпуске и больше нигде.
Каждая попытка активировать токен записывается — ваш id, пришла ли она с этого сайта или из Discord, чем закончилась и хеш с ключом от адреса, который этот сайт подтвердил для запроса, но никогда сам адрес. Эта запись блокирует аккаунт и адрес после нескольких неверных токенов и позволяет тем, кто управляет ботом, увидеть один адрес за многими аккаунтами. Она удаляется через 90 дней.
Каждый сервер хранит запись о том, какой аккаунт добавил sick; именно это делает сервер премиальным, когда премиум есть у этого аккаунта. Серверы, на которые вы добавляете sick, также записываются за вашим аккаунтом — id сервера и время — чтобы можно было считать ваши переносы. Этот список хранится, и сервер остаётся в нём после ухода sick, потому что потраченный перенос потрачен.
Почта на этом домене
На сайте есть и небольшая почтовая служба для тех, кто его ведёт: собственный адрес владельца и адреса аккаунтов, которым владелец разрешил ею пользоваться; каждый открывается с почтового сайта после входа здесь. Почта на один из этих адресов приходит через Cloudflare Email Routing и Cloudflare Email Worker, который передаёт её этому сайту; когда сайт недоступен, Worker хранит сообщение в Cloudflare Workers KV до семи дней и пробует снова. Почта, отправленная с одного из этих адресов, уходит через Cloudflare Email Sending. Это четыре задействованные службы Cloudflare, и больше никто почту не видит.
Почта запечатана в состоянии покоя. Когда приходит сообщение, этот сайт разбирает его и запечатывает открытым ключом, принадлежащим почтовому ящику, — AES-256-GCM под одноразовым ключом для этого сообщения, который в свою очередь запечатан открытым ключом X25519 ящика, — и лишь затем передаёт его боту, база данных которого хранит запечатанное сообщение: тему, отправителя, получателей, текст, HTML, вложения и их названия, а также исходные байты, которые хранятся семь дней, чтобы сообщение, неверно прочитанное разборщиком, можно было скачать целиком. Закрытый ключ, который его открывает, обёрнут ключом, полученным из вашего почтового пароля (scrypt), а если вы создадите, то и одноразовым ключом восстановления; бот никогда не держит закрытый ключ и хранит лишь односторонний хеш вашего пароля. Это нулевой доступ в состоянии покоя, а не нулевое разглашение: этот сайт читает вашу почту в памяти, пока разбирает приходящее сообщение и пока ваш ящик разблокирован, так что любой, кто может изменить код, который выполняет этот сайт, мог бы её прочитать, но владелец не может прочитать её из базы данных. Ваш разблокированный ключ живёт только в памяти этого сайта, не дольше суток, а перезапуск блокирует каждый ящик, пока вы снова не введёте пароль. Удалённые изображения в сообщении сайт никогда не загружает: они загружаются в вашем браузере только по вашей просьбе, а загрузка изображения сообщает отправителю, когда вы открыли сообщение и откуда.
Когда вы входите на этот сайт через Discord, записываются ваш идентификатор Discord, имя пользователя и хеш аватара вместе со временем, чтобы владелец видел, кто входил, прежде чем выдавать адрес. Корзина и Спам удаляют своё содержимое через тридцать дней после попадания сообщения в них; отозванный почтовый ящик удаляется через четырнадцать дней после отзыва. Если вы просите у владельца доступ, запрос — тот же id, имя и хеш аватара, а также время — хранится, пока владелец не ответит на него или не пройдёт тридцать дней, а владельца уведомляет личное сообщение от бота в Discord. Больше ничего о почте не передаётся Discord.
Отправка считается по получателям — по строкам исходящих, которые и так хранятся для отправки письма, поэтому для этого ничего нового не собирается. Если почта ящика постоянно возвращается, его отправка приостанавливается, пока владелец не разберётся. Письма на postmaster@ и abuse@ на этих доменах доходят до владельца.
Кое-что остаётся открытым, потому что службе нужно читать это без вашего ключа: в какой папке и на какой вкладке лежит сообщение, его флаги (прочитано, со звёздочкой, важное, отложено), когда оно пришло, его размер, к какой беседе оно относится, сколько в нём вложений, их типы файлов и идентификаторы встроенных изображений, на какой из ваших адресов оно пришло, использованный вами плюс-тег, результаты проверок отправителя и ключевые дайджесты его идентификаторов (Message-ID, References) и отправителя. Правила, которые вы задали для отправителей, — адрес или домен, который вы разложили, заблокировали или для которого разрешили изображения, — тоже открыты. Пока сообщение приходит, бот читает в памяти его отправителя, получателей, тему, заголовки и названия вложений, чтобы разложить его по вкладке и применить правила против злоупотреблений, и ничего из этого не записывает в открытом виде. Ящики, владелец которых ещё не входил с паролем с тех пор, как началось запечатывание, хранят прежнюю почту как была, читаемой для службы; владельцу показывают, какие именно, и каждый запечатывается, как только его обладатель входит.
Поиск работает по ключевым дайджестам, а не по вашим словам. Когда ваш ящик разблокирован, каждое запечатанное сообщение получает до 512 дайджестов (HMAC-SHA256) целых слов в нём, а также его отправителя и получателей, сделанных под случайным ключом поиска, который существует только обёрнутым под вашим паролем и вашим ключом восстановления. Так поиск может найти целые слова и точные адреса — но не префиксы, словоформы или фразы, — а тот, у кого есть копия базы данных, не может проверять по ним угаданное слово. Две цены: почту, пришедшую, пока ваш ящик заблокирован, нельзя искать, пока вы в следующий раз его не разблокируете; а ключевые дайджесты идентификаторов и отправителей, оставленных в открытом виде (выше), делаются под секретом, который есть у сайта и которого нет у базы данных, так что тот, у кого есть и то и другое, может проверить, встречается ли угаданный адрес или Message-ID.
Сообщение, которое вы отправляете с отменой или в более позднее время, ждёт в исходящих в том виде, который нужен отправителю: поскольку при отправке оно должно быть читаемым, оно хранится под собственным серверным ключом бота, пока не будет отправлено, отменено или окончательно отклонено, а затем удаляется. Копия в вашей папке «Отправленные» остаётся запечатанной для вас. Почта, которую вы отправляете, уходит по TLS, как и любая другая, через Cloudflare Email Sending, а почта к вам приходит через Cloudflare Email Routing: Cloudflare видит сообщение в пути, до того как этот сайт его запечатает, и когда оно уходит.
Сообщения, которые вы отправляете, не несут идентификатора Discord, идентификатора аккаунта или адреса вашего браузера: случайный Message-ID в домене отправки, ни заголовка X-Mailer, User-Agent или X-Originating-IP, и строка From, показывающая только выбранный вами адрес, с отображаемым именем лишь тогда, когда вы его задали. Псевдоним — это дополнительный адрес, который доставляет в ваш ящик и который можно отключить, задать ему срок действия или разрешить ответить один раз. Это не анонимность перед теми, кто ведёт службу, перед Cloudflare или перед тем, кому вы пишете: они видят адрес, с которого вы писали, время и то, что сказано в сообщении.
Если вы потеряете и пароль, и ключ восстановления, вашу почту нельзя будет открыть, и никто не сможет восстановить её для вас, включая владельца. Когда владелец сбрасывает почтовый пароль обладателя ящика, ключ, который он открывал, тоже удаляется: почту, запечатанную под ним, больше никогда нельзя будет прочитать, и она удаляется через тридцать дней.
Музыка и тексты песен
Когда сервер включает музыкальный плеер, бот воспроизводит звук в голосовом канале через узел Lavalink, который работает рядом с ним на том же компьютере. Узел берёт звук только с сайта, который запросил участник, и больше ниоткуда: SoundCloud (soundcloud.com, on.soundcloud.com, api.soundcloud.com, sndcdn.com), Bandcamp (bandcamp.com), Twitch (twitch.tv), Vimeo (vimeo.com), прямая ссылка https, вставленная участником, и — только если владелец это включил — YouTube (youtube.com, youtu.be, music.youtube.com). Ссылка на Spotify (open.spotify.com, spotify.link) или Apple Music (music.apple.com) ищется на этом сайте ради названия трека, а найденное совпадение воспроизводится с SoundCloud; ни с одного из них звук не поступает. Каждый из этих сайтов видит запрос, который узел делает за треком, как его увидел бы любой браузер, открывающий страницу, и ничего о сервере или об участнике, который его запросил.
Что бот хранит для плеера: голосовой и текстовый каналы, в которых он находится, очередь — название, исполнителя, длительность и источник каждого трека, собственный идентификатор узла для него и id участника, поставившего его в очередь, — а также последние двадцать воспроизведённых треков, которые удаляются, когда плеер останавливается или бот покидает сервер. Плейлист, который сохраняет участник, принадлежит ему и хранится под его id, пока он его не удалит. Тексты песен приходят из LRCLIB (lrclib.net), открытой базы данных без аккаунтов: ей отправляются исполнитель, название и длительность играющего трека и ничего больше, а ответ показывается и не сохраняется.
Безопасность вашего аккаунта
Ваш почтовый ящик открывается вашим собственным паролем, заданным в самом почтовом клиенте и хранящимся отдельно от Discord. Этот сайт видит его, только пока вы его вводите, чтобы развернуть ключ вашего ящика, и не хранит его; бот, который получает его для проверки, хранит лишь односторонний scrypt-хеш от него — значение, которое ничто не может превратить обратно в пароль, даже мы, — и сверяет введённое с ним. Самого пароля нет ни в одном журнале, ни в одном столбце базы данных и ни в одном cookie.
Второй шаг необязателен и зависит от вас. Секрет приложения-аутентификатора и адрес, на который отправляется код, хранятся зашифрованными с помощью AES-256-GCM, тем же доступным только боту ключом, что и конфиденциальный текст выше; ключ доступа хранится лишь как его открытый ключ, которым можно проверить вход, но никогда его создать; коды восстановления хранятся только как ключевые хеши, как премиум-токены. Отправленный код уходит через Cloudflare Email Sending с адреса на нашем домене. Ни один метод второго фактора ни с кем не передаётся.
Доверие браузеру на тридцать дней сохраняет случайный токен в cookie, а на стороне бота — лишь ключевой хеш этого токена, но никогда сам токен, так что в списке ваших доверенных браузеров нет ничего, что опознавало бы браузер перед кем-то ещё. Помимо трёх cookie входа панели, почтовый ящик, пока он открыт, задаёт несколько своих: тот, что держит его разблокированным сутки, тот, что хранит вход или пароль, пока отвечают на его второй шаг, тот, что живёт десять минут и отмечает браузер, начавший вход в почту, чтобы его нельзя было завершить из другого, и токен доверенного браузера. Почтовый сеанс заканчивается через шесть часов после открытия или раньше, если вы выходите с сайта на общем хосте. Каждый неверный пароль или код засчитывается против вашего аккаунта и против адреса, который доказал этот сайт, — ваш id и ключевой хеш этого адреса, но никогда сам адрес, — что блокирует аккаунт после нескольких попыток за четверть часа; эти записи удаляются в течение суток.
Прослушивания — только если вы что-то подключите
Что хранится. /fm ничего не хранит о человеке, пока он не подключит источник. Если вы подключите Last.fm или ListenBrainz, мы сохраним ваше имя пользователя там. Если вы также включите скробблинг наружу, мы сохраним ключ, позволяющий боту отправлять прослушивания за вас, в зашифрованном виде и только пока это включено — отключение или отвязка удаляет его. Если вы используете статус Spotify в Discord, бот читает песню Spotify из вашего статуса на общих с вами серверах, только после вашего согласия, и записывает прослушивание, когда вы прослушали около половины. Ничто другое в вашем присутствии не читается.
Что хранится дальше и кто это видит. Прослушивания, которые бот услышал сам, — из вашего статуса Spotify или его собственного музыкального плеера, — хранятся год. Ваши топ-исполнители, альбомы, треки и жанры, до тысячи каждого, копируются из вашего сервиса раз в несколько часов, чтобы сервер мог показывать, кто что слушает. Друзья, несколько настроек отображения и серверы, где вы решили скрыться, тоже хранятся. Прослушивания и списки показываются только людям на серверах, где вы состоите; ваше имя пользователя Last.fm или ListenBrainz появляется в глобальном «кто знает» только если вы это включили, а до тех пор это выключено. /fm account показывает всё это и удаляет всё сразу, и отвязка последнего источника делает то же самое.
Last.fm и ListenBrainz. Когда кто-то использует /fm, бот запрашивает у Last.fm (ws.audioscrobbler.com) или ListenBrainz (api.listenbrainz.org) публичные данные о прослушивании подключённого человека, используя его имя пользователя и ничего больше о нём. Только если скробблинг наружу включён, бот также отправляет сервису прослушивания, которые он услышал для этого человека, подписанные его ключом. Обложки альбомов бот получает с серверов изображений Last.fm, а не ваше устройство. У каждого сервиса своя политика конфиденциальности, а то, что он хранит о ваших прослушиваниях, и так принадлежало вам там.
Привязка Last.fm происходит на самой странице Last.fm: бот запрашивает у Last.fm одноразовый токен и выдаёт вам адрес, где вы его подтверждаете, а затем узнаёт об этом, спросив Last.fm. Токен живёт только в памяти бота, пока не будет использован или не пройдёт час, и никогда не сохраняется и не попадает в журнал. Если ввести только имя пользователя Last.fm, аккаунт привязывается без подтверждения, и Last.fm получает это имя и больше ничего. Для привязки статуса Spotify в Discord боту нужен интент Presence; пока он не включён, доступны только два других способа.
Импорт истории. Если вы передадите /fm import файл Spotify или Apple Music, бот прочитает его один раз и сохранит только время, исполнителя, трек и альбом каждого прослушивания. Сам файл хранится во временном файле те несколько минут, пока идёт импорт, и сразу удаляется; никому ничего не отправляется. Импортированные прослушивания хранятся, пока вы их не удалите (в /fm account есть кнопка) или не удалите всё, и показываются как любые другие: только людям на серверах, где вы состоите.
История корон. Когда читаются короны сервера или рейтинг «кто знает», бот записывает, кто держит корону каждого исполнителя, а когда она переходит к другому — кто, у кого и когда её забрал, до года. Удаление данных о прослушивании убирает короны, которые ты держал, и забывает, у кого ты забрал корону.
Шифрование
Свободный текст, который люди пишут с расчётом на конфиденциальность, шифруется AES-256-GCM перед сохранением и расшифровывается только в момент показа тому персоналу, для которого он написан. Это пять вещей: апелляции на баны, ответы на заявки в команду, ответы, данные при открытии тикета, комментарий к оценке тикета и год, который человек указывает вместе с днём рождения. Ключ получается из секрета, который существует только в окружении самого бота, — сайт работает как отдельный сервис, у которого его нет и который не смог бы его использовать, — поэтому копия одной только базы данных даёт лишь шифротекст.
До 19 сентября 2026 года здесь стояло «три», и четвёртое было причиной: комментарий к оценке тикета — в нём пишут, например, «модератор, закрывший это, был со мной резок» — хранился открытым текстом со дня выхода функции. Он находился двумя объявлениями ниже ответов в тикетах, которые шифровались, в том же файле, и ничто не сверяло их между собой. Теперь он зашифрован, всё уже сохранённое преобразовано, а проверка в сборке отвергает любое новое поле такого вида, пока кто-нибудь не запишет, к какому из двух видов оно относится.
Незавершённые заявки. Длинная анкета заполняется по страницам. Ответы на уже отправленные страницы хранятся в зашифрованном виде так же, как и сама заявка, — пока не отправлена последняя страница (тогда они становятся заявкой) или в течение часа, смотря что наступит раньше; заявитель может удалить их в любой момент. Для тех, кто не начинал, ничего не хранится.
Что не шифруется, сказано прямо: вопрос, который сотрудник написал рядом с каждым ответом, причины, введённые модератором в записи модерации, причина, которую участник указывает для AFK, — которую бот показывает всем, кто его упоминает, — и настройки вашего сервера. Ничто из этого не является чьими-то личными словами о себе, а шифрование лишило бы ваших модераторов возможности искать по собственным записям.
Удаление
Удалите бота с вашего сервера — и всё, что хранится для этого сервера, будет удалено через тридцать дней автоматически, без какого-либо запроса.
Задержка — это особенность, а не подвох. Самая частая причина, по которой сервер убирает бота, — тут же добавить его снова с другими правами, а удаление, срабатывающее в ту же секунду, унесло бы с собой каждую настройку, каждое предупреждение и каждую запись модерации. Пригласите бота обратно в течение этого срока — и ваш сервер будет в точности таким, как вы его оставили; пропустите срок — и возвращаться будет не к чему. Пока бота нет, ничего нового не записывается — он не видит сервер, — а отсчёт начинается заново с последнего ухода, поэтому двойной уход его не сокращает.
Если тридцать дней — это слишком долго, владелец или администратор сервера может добиться немедленного удаления: попросите на сервере поддержки. Это делается по запросу, а не по расписанию.
Вход в панель
Этот сайт — sykbot.com, а документация находится на sickenn.info. Вход выполняется на sicken.me и больше нигде, а cookie ниже принадлежат только этому адресу — браузер никогда не отправляет их на какой-либо другой адрес. Страница в любом другом месте, которая просит вас войти через Discord для sick, не является этим сайтом. Почта читается и пишется на mail.sicken.me. Собственного входа у неё нет: она отправляет тебя на sicken.me, чтобы войти, и возвращает обратно, а её cookie принадлежат только ей.
У сайта нет базы данных, поэтому вход хранится в одном cookie в вашем браузере. При входе у Discord запрашиваются две области доступа, identify и guilds — ваше имя и список серверов, где вы состоите, больше ничего, — и cookie содержит то, что приходит в ответ: ваш Discord ID, имя пользователя и ID вашего аватара, а также токены доступа и обновления для этих двух областей. Оно зашифровано и защищено от подмены с помощью AES-256-GCM ключом, который есть только у сайта, поэтому в вашем браузере его нельзя прочитать или изменить, а на сервере о нём ничего не записывается. Ещё оно запоминает до четырёх серверов, которые вы открывали недавно, чтобы они шли в списке первыми.
Ваш аватар и значки ваших серверов этот сайт берёт у Discord и передаёт вашему браузеру, поэтому ваш браузер никогда не обращается к серверам изображений Discord, а они никогда не видят ваш адрес. Сайт ничего из этого не хранит: каждое изображение берётся, когда страница его запрашивает, а ваш браузер и сеть перед этим сайтом могут держать копию до недели, по адресу, который меняется вместе с картинкой.
Пока страница настроек функции открыта и видна на экране, она раз в минуту снова спрашивает у этого сайта — и ни у кого другого — списки каналов и ролей вашего сервера, чтобы только что созданный канал можно было выбрать без перезагрузки. Этот запрос несёт то же cookie и обслуживается только тому, кто мог бы открыть страницу; это единственное, что любая страница здесь запрашивает после загрузки, и Content-Security-Policy разрешает это только на этих страницах.
Вход действует тридцать дней с момента входа, и именно это позволяет вернуться без нового подключения Discord; после этого браузер отправляется через Discord без экрана согласия — для приложения, которое вы уже одобрили. Месяц безопасен только потому, что Discord остаётся главным: каждые несколько минут сайт спрашивает у Discord, действует ли вход ещё, выход отзывает токены в Discord — поэтому копия cookie тоже перестаёт работать, — а удаление sick в разделе Authorized Apps в собственных настройках Discord завершает его с вашей стороны, сразу на всех устройствах.
Второй cookie содержит только цифру 1 и существует только после выхода. Он записывает, что вы вышли, чтобы при следующем входе показывался экран согласия Discord — с собственной кнопкой Discord «Not you?» («Не вы?»), с помощью которой вы меняете аккаунт, — а не пропускался. Повторный вход его удаляет. Третий живёт десять минут, пока идёт вход, и содержит случайное значение, доказывающее, что ответ, приходящий от Discord, относится к входу, начатому этим браузером. Эти три — единственные cookie, которые ставит этот сайт. Cloudflare, стоящий перед ним, может поставить собственный недолговечный cookie __cf_bm, чтобы отличать браузеры от ботов; он принадлежит Cloudflare, и здесь его никто не читает.
Кто что видит
Конфигурацию видят те, кто может её менять, — по умолчанию это значит Управлять сервером, а для немногих функций, которые просят Администратора, — и больше. Записи модерации видят ваши модераторы. Никто из тех, кто управляет ботом, не читает данные вашего сервера в порядке обычного дела, и нет интерфейса, который сделал бы это удобным.