Discord – это довольно популярный мессенджер. Википедия: https://en.wikipedia.org/wiki/Discord_(software).
У Discord (пока?) нет функции “экспортировать лог чата”. А экспортировать историю полезно: для бекапа на случай если модератор удалит канал или сервер; чтобы превратить переписку в заметки и т.п.
Есть сторонний инструмент, чтобы решить эту задачу.
Инструмент живет здесь: https://github.com/Tyrrrz/DiscordChatExporter
Там же есть инструкции по подготовке и использованию. Инструкции длинны, но хороши.
В целом надо сделать:
Я использую CLI-версию, под Linux. Для Windows бывает версия с графическим интрефейсом.
Скрипт может экспортировать лог чата в разных форматах: красивый html, json, просто текст.
Посмотреть в Readme: https://github.com/Tyrrrz/DiscordChatExporter, примечание “Requires .NET runtime to be installed manually”.
По состоянию на январь 2022 года была нужна версия 6.
Инструкция по ручной установке: https://docs.microsoft.com/en-us/dotnet/core/install/linux-scripted-manual#manual-install
Коротко:
Скачать архив со страницы https://dotnet.microsoft.com/en-us/download/dotnet/6.0 (если требуемая версия больше 6 – выбрать соответствующую страницу), раздел .NET Runtime
.
Файл называется в духе
Выполнить:
DOTNET_FILE=dotnet-runtime-6.0.1-linux-x64.tar.gz #здесь подставить имя скачанного файла
export DOTNET_ROOT=$HOME/dotnet
mkdir -p "$DOTNET_ROOT" && tar zxf "$DOTNET_FILE" -C "$DOTNET_ROOT"
export PATH=$PATH:$DOTNET_ROOT
В .bashrc/.zshrc дописать:
PATH=$PATH:$HOME/dotnet
DOTNET_ROOT=$HOME/dotnet
Скачать файл DiscordChatExporter.CLI.zip с github: https://github.com/Tyrrrz/DiscordChatExporter, CLI/stable release.
Распаковать.
Будем использовать DiscordChatExporter.Cli.dll
.
Можно сделать скрипт-обертку и положить куда-нибудь в $PATH
.
DiscordChatExporter.sh
:
#!/usr/bin/sh
dotnet /full/path/to/DiscordChatExporter.Cli.dll "$@"
Вместо этого можно получить роботный токен, но это чуть дольше.
Работает второй метод из этого видео: https://www.youtube.com/watch?v=WWHZoa0SxCc
Коротко:
Открыть Discord-чат в браузере, посмотреть url. Большое число – id чата.
Если url почему-то недоступен, открыть Developer Tools, пойти в Console и запросить window.location.href, это будет url.
Экспортировать лог чата в умолчальном формате (html), с умолчальным именем файла (скрипт составит его из названия и id чата):
DiscordChatExporter.sh export -t <token> -c <id чата>
# или
dotnet /full/path/to/DiscordChatExporter.Cli.dll export -t <token> -c <id чата>
То же самое, но в виде json:
DiscordChatExporter.sh export -t <token> -c <id чата> -f Json
То же самое, но в виде простого текста:
DiscordChatExporter.sh export -t <token> -c <id чата> -f PlainText
Простой текст; записать в файл my-file.txt:
DiscordChatExporter.sh export -t <token> -c <id чата> -f PlainText -o my-file.txt
То же самое, но с датой-временем в формате yyyy-MM-dd HH:mm:ss
(время будет в таймзоне, установленной на локальном компьютере):
DiscordChatExporter.sh export -t <token> -c <id чата> -f PlainText -o my-file.txt --dateformat 'yyyy-MM-dd HH:mm:ss'
То же самое, но время будет с указанием таймзоны:
DiscordChatExporter.sh export -t <token> -c <id чата> -f PlainText -o my-file.txt --dateformat 'yyyy-MM-dd HH:mm:ss (UTCK)'
То же самое, но время в UTC:
DiscordChatExporter.sh export -t <token> -c <id чата> -f PlainText -o my-file.txt --dateformat 'u'
То же самое, но выгрузить только сообщения начиная с 2021-05-30 02:28:14
(время в таймзоне локального компьютера):
DiscordChatExporter.sh export -t <token> -c <id чата> -f PlainText -o my-file.txt --dateformat 'u' --after '2021-05-30 02:28:14'
То же самое, но выгрузить сообщения начиная с 2021-05-30 02:28:14
по UTC:
DiscordChatExporter.sh export -t <token> -c <id чата> -f PlainText -o my-file.txt --dateformat 'u' --after '2021-05-30 02:28:14Z'
Сообщения лежат в текстовом файле.