Альтернативный клиент Discord, сделанный в C ++ с GTK
![]() | ![]() |
![]() | ![]() |
Текущие функции:
1 - Абаддон старается лучше (хотя и не идеально), чтобы Discord думал, что это законный веб -клиент. Некоторые из вещей, сделанных для этого, включают в себя: использование пользовательского агента браузера, отправка того же сообщения идентификации, что и официальный веб -клиент, используя конечные точки API V9 во всех случаях и не используя конечные точки, которые веб -клиент обычно не использует. Однако есть еще несколько меньших несоответствий. Например, веб -клиент отправляет много телеметрии через конечную точку /science (Ublock Origin останавливает это), а также в заголовках всех запросов.
Посмотрите здесь о вещах, которые вы можете избежать, если вы беспокоитесь о том, чтобы быть пойманным в спам -фильтре.
2 - Enicode Emojis заменяются вручную в отличие от вывода GTK на платформах, не являющихся Windows. Это может быть изменено с помощью настройки stock_emojis , как показано в нижней части этого чтения. Шрифт на основе CBDT с использованием Twemoji предоставляется для того, чтобы GTK был назначен на Windows.
3 - Есть некоторые несоответствия с состоянием потока, которые могут встречаться в некоторых более необычных случаях, но они являются результатом фундаментальных проблем с реализацией потока Discord.
git clone --recurse-submodules="subprojects" https://github.com/uowuo/abaddon && cd abaddonmkdir build && cd buildcmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo ..ninjagit clone https://github.com/uowuo/abaddon --recurse-submodules="subprojects" && cd abaddonbrew install gtkmm3 nlohmann-json libhandy opus libsodium spdlog adwaita-icon-thememkdir build && cd buildcmake ..make$ sudo apt install g++ cmake libgtkmm-3.0-dev libcurl4-gnutls-dev libsqlite3-dev libssl-dev nlohmann-json3-dev libhandy-1-dev libsecret-1-dev libopus-dev libsodium-dev libspdlog-dev$ sudo pacman -S gcc cmake gtkmm3 libcurl-gnutls lib32-sqlite lib32-openssl nlohmann-json libhandy opus libsodium spdlog$ sudo dnf install g++ cmake gtkmm3.0-devel libcurl-devel sqlite-devel openssl-devel json-devel libsecret-devel libhandy-devel opus-devel libsodium-devel spdlog-develПРИМЕЧАНИЕ. На более старых версиях Fedora вам может потребоваться установить GTKMM30-DEVEL вместо GTKMM3.0-Devel. Используйте
dnf search gtkmm3чтобы увидеть доступные пакеты.
git clone https://github.com/uowuo/abaddon --recurse-submodules="subprojects" && cd abaddonmkdir build && cd buildcmake ..makepkg install git cmake nlohmann-json spdlog gtkmm30 libhandy libsodiumgit clone https://github.com/uowuo/abaddon --recurse-submodules="subprojects" && cd abaddonmkdir build && cd buildcmake ..makeПоследняя версия релиза: https://github.com/uowuo/abaddon/releases/latest
CI:
Предупреждение : если вы используете Windows, не забудьте начать с каталога
bin
Необходимы две папки в папке res ( res/res и res/css ). Windows также использует папку fonts . Вы можете поместить их прямо рядом с исполняемым файлом. На Linux, css и res также могут быть загружены из ~/.local/share/abaddon или /usr/share/abaddon
abaddon.ini также будет автоматически использован, если он находится по адресу ~/.config/abaddon/abaddon.ini , и в рабочем каталоге нет abaddon.ini
Следуйте этим инструкциям.
Discord любит отключение учетных записей/заставляя их сбросить свои пароли, если они считают, что пользователь является спам -ботом или, возможно, скомпрометировал свою учетную запись. В то время как официальный клиент по -прежнему часто попадает в спам -фильтр, сторонние клиенты чаще расстраивают спам -фильтр. Если вас поймают, вы обычно можете обратиться к нему и восстановить его. Вот некоторые вещи, которые вы могли бы захотеть сделать с официальным клиентом вместо этого, если вы особенно боитесь вызовать гнев фильтра спама:
| Селектор | Описание |
|---|---|
.app-window | Применяется ко всем окнам. Это означает главное окно и все всплывающие окна |
.app-popup | Дополнительный класс для .app-window S, когда окно не является главным окном |
.channel-list | Контейнер из списка каналов |
.messages | Контейнер с сообщением пользователей |
.message-container | Контейнер, который содержит сообщения пользователя |
.message-container-author | Автор ярлыка для контейнера сообщения |
.message-container-timestamp | Метка временной метки для контейнера сообщения |
.message-container-avatar | Аватар для пользователя в сообщении |
.message-container-extra | Этикетка, содержащая бот/веб -крюк |
.message-text | Текст пользовательского сообщения |
.pending | Дополнительный класс .message-Text для отправки на рассмотрение сообщений |
.failed | Дополнительный класс .message-Text для сообщений, которые не были отправлены |
.message-attachment-box | Содержит информацию о вложении |
.message-reply | Контейнер для ответного сообщения в ответе (эти элементы также будут иметь набор .message-Text) |
.message-input | Применяется к входному контейнеру чата |
.replying | Дополнительный класс для ввода чата при создании ответа |
.reaction-box | Содержит реакционное изображение и счет |
.reacted | Дополнительный класс для реакционной коробки, когда пользователь отреагировал с определенной реакцией |
.reaction-count | Содержит счет для реакции |
.completer | Контейнер для завершения сообщения |
.completer-entry | Контейнер для одной записи в завершении |
.completer-entry-label | Содержит этикетку для записи в завершении |
.completer-entry-image | Содержит изображение для записи в завершении |
.embed | Контейнер для встроенного сообщения |
.embed-author | Автор встроенного |
.embed-title | Название встроенного |
.embed-description | Описание встроенного |
.embed-field-title | Название встроенного поля |
.embed-field-value | Значение встроенного поля |
.embed-footer | Нижний колонтитул встроенного |
.member-list | Контейнер списка участников |
.typing-indicator | Индикатор печати (также используется для ответов) |
Используется в реализации списка переупорядоченных:
| Селектор |
|---|
.drag-icon |
.drag-hover-top |
.drag-hover-bottom |
Используется в всплывающем окне «Настройки гильдии»:
| Селектор | Описание |
|---|---|
.guild-settings-window | Контейнер для списка участников на панели членов |
.guild-members-pane-list | |
.guild-members-pane-info | Контейнер для информации о участнике |
.guild-roles-pane-list | Контейнер для списка ролей в роли |
Используется в всплывающем окне профиля:
| Селектор | Описание |
|---|---|
.mutual-friend-item | Применяется к каждому элементу в списке общих друзей |
.mutual-friend-item-name | Имя в общем другом товар |
.mutual-friend-item-avatar | Аватар в общем другом предмете |
.mutual-guild-item | Применяется к каждому элементу в списке взаимных гильдий |
.mutual-guild-item-name | Название в пункте взаимной гильдии |
.mutual-guild-item-icon | Икона в пункте взаимной гильдии |
.mutual-guild-item-nick | Прозвище пользователя в пункте взаимной гильдии |
.profile-connection | Применяется к каждому элементу в списке подключений пользователей |
.profile-connection-label | Метка в элементе подключения профиля |
.profile-connection-check | Шатра в проверенных элементах подключения профиля |
.profile-connections | Контейнер для подключений профиля |
.profile-notes | Контейнер для заметок в окне профиля |
.profile-notes-label | Этикетка с надписью «Примечание» |
.profile-notes-text | Фактический текст заметки |
.profile-info-pane | Применяется к контейнеру для разделения информации о всплывающем окне профиля |
.profile-info-created | Метка для даты создания профиля |
.user-profile-window | |
.profile-main-container | Внутренний контейнер для профиля |
.profile-avatar | |
.profile-username | Отображение пользователя (имя пользователя для обратной совместимости) |
.profile-username-nondisplay | Фактическое имя пользователя |
.profile-switcher | Кнопки, используемые для переключения просмотренного раздела профиля |
.profile-stack | Контейнер для информации о профиле, который можно переключить между |
.profile-badges | Контейнер для значков |
.profile-badge |
Настройки настроены (на данный момент) путем редактирования abaddon.ini . Формат аналогичен стандартному формату INI Windows, кроме :
# используется для начала комментариев, а не ;Предупреждение : вы должны отредактировать их, пока клиент закрыт, хотя есть возможность перезагрузить во время работы.
Этот список организован в разделе. Например, memory_db будет установлен путем добавления memory_db = true под строкой [discord]
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
gateway | нить | Переопределить URL для раздора. Должен быть формат JSON и использовать сжатие потока Zlib | |
api_base | нить | переопределить базовый URL для Discord API | |
memory_db | логический | ЛОЖЬ | Если это правда, данные о разборе будут храниться в памяти, а не на диске |
token | нить | Token Discord используется для входа в систему, это может быть установлено из меню | |
prefetch | логический | ЛОЖЬ | Если это правда, новые сообщения приведут к автоматическому загрузке аватара и изображений. |
autoconnect | логический | ЛОЖЬ | Автоконкт до раздора |
keychain | логический | истинный | Хранить токен в системном ключевом матче (если скомпилируется с поддержкой) |
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
user_agent | нить | Устанавливает пользовательский агент для использования в HTTP-запросах в API Discord (не включая медиа/изображения) | |
concurrent | инт | 20 | Сколько изображений можно одновременно извлечь |
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
member_list_discriminator | логический | истинный | Показать дискриминаторы пользователей в списке участников |
stock_emojis | логический | истинный | Позвольте Абаддону заменить эмодзи Unicode изображениями из emojis.bin, должен быть ложным, чтобы позволить GTK оказаться в самой эмодзи. |
custom_emojis | логический | истинный | Скачать и использовать пользовательские смайлики Discord |
css | нить | Путь к основному файлу CSS | |
animations | логический | истинный | Используйте анимированные изображения, где доступны (например, значки сервера, эмодзи, аватары). Неверные средства будут использоваться статические изображения |
animated_guild_hover_only | логический | истинный | Только иконки гильдии, когда гильдия падают |
owner_crown | логический | истинный | Показать корону рядом с владельцем |
unreads | логический | истинный | Показать нечитанные индикаторы и упомянуть значки |
save_state | логический | истинный | Сохраните состояние графического интерфейса (активные каналы, вкладки, расширенные каналы) |
alt_menu | логический | ЛОЖЬ | Скрыть меню, если не раскрыто с Alt Key |
hide_to_tray | логический | ЛОЖЬ | Спрячьте Абаддона к подносу системы на окне. |
show_deleted_indicator | логический | истинный | Показать [удаленный] индикатор рядом с удаленными сообщениями вместо того, чтобы фактически удалять сообщение |
font_scale | двойной | Шкал -шрифт рендеринг. 1 не изменился | |
image_embed_clamp_width | инт | 400 | максимальная ширина встроенных изображений |
image_embed_clamp_height | инт | 300 | максимальная высота встроенных изображений |
classic_channels | логический | ЛОЖЬ | Используйте классический интерфейс в стиле Discord для листинга сервера/каналов |
classic_change_guild_on_open | логический | истинный | Изменить отображаемая гильдия при выборе канала (список классических каналов) |
| Параметр | Тип | Описание |
|---|---|---|
expandercolor | нить | Цвет для использования для расширителя в списке каналов |
nsfwchannelcolor | нить | Цвет для использования для каналов NSFW в списке каналов |
mentionbadgecolor | нить | Цвет фона для упоминания значков |
mentionbadgetextcolor | нить | цвет для использования для номера, отображаемых на значках упоминания |
unreadcolor | нить | цвет для использования для нечитанного индикатора |
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
enabled | логический | Правда (если не в окнах) | Включить уведомления на рабочем столе |
playsound | логический | истинный | Включить звуки уведомления. Требуется enable_notification_sounds = true в Cmake |
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
vad | нить | rnnoise, если включено, иначе, иначе | Метод, используемый для обнаружения голосовой активности. Изменен в пользовательском интерфейсе |
backends | нить | пустой | Изменить приоритет бэкэнда при инициализации Miniaudio: wasapi;dsound;winmm;coreaudio;sndio;audio4;oss;pulseaudio;alsa;jack |
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
hideconsole | логический | ЛОЖЬ | Скрыть консоль на стартапе |
| переменная | Описание |
|---|---|
ABADDON_NO_FC | (Только Windows) Не используйте пользовательскую конфигурацию шрифта |
ABADDON_CONFIG | Изменить путь файла конфигурации для использования. относительно CWD или может быть абсолютным |