Alternativer Discord -Client in C ++ mit GTK hergestellt
![]() | ![]() |
![]() | ![]() |
Aktuelle Funktionen:
1 - Abaddon versucht sein Bestes (wenn auch nicht perfekt), um Zwietracht zu bringen, dass es sich um einen legitimen Web -Client handelt. Einige der Dinge, die dies tun, umfassen: Verwenden eines Browser -Benutzeragenten, Senden der gleichen Identifizierungsnachricht wie der offizielle Web -Client, die Verwendung von API -V9 -Endpunkten in allen Fällen und nicht die Verwendung von Endpunkten, die der Web -Client normalerweise nicht verwendet. Es gibt jedoch noch einige kleinere Inkonsistenzen. Zum Beispiel sendet der Web -Client viele Telemetrie über den Endpunkt /science (Ublock Origin stoppt dies) sowie in den Headern aller Anfragen.
Sehen Sie hier für Dinge, die Sie möglicherweise vermeiden möchten, wenn Sie sich Sorgen machen, im Spam -Filter gefangen zu sein.
2 - Unicode -Emojis werden manuell im Gegensatz zu GTK -Plattformen manuell ersetzt. Dies kann mit der Einstellung stock_emojis geändert werden, wie am Ende dieses Readme gezeigt. Eine CBDT-basierte Schriftart mit Twemoji wird bereitgestellt, damit GTK Emojis nativ unter Windows rendern kann.
3 - Es gibt einige Inkonsistenzen mit dem Thread -Status, die in einigen ungewöhnlicheren Fällen möglicherweise auftreten. Sie sind jedoch das Ergebnis grundlegender Probleme bei der Implementierung von 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-develHinweis: Bei älteren Versionen von Fedora müssen Sie möglicherweise GTKMM30-Devel anstelle von GTKMM3.0-Devel installieren. Verwenden Sie
dnf search gtkmm3um verfügbare Pakete anzuzeigen.
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 ..makeNeueste Versionsversion: https://github.com/uowuo/abaddon/releases/latest
CI:
Warnung : Wenn Sie Windows verwenden, starten Sie im Bin -Verzeichnis im
bin-Verzeichnis
Die beiden Ordner innerhalb des res -Ordners ( res/res und res/css ) sind erforderlich. Windows verwendet auch den Ordner fonts . Sie können sie direkt neben die ausführbare Datei setzen. Unter Linux, css und res können auch von ~/.local/share/abaddon oder /usr/share/abaddon geladen werden
abaddon.ini wird auch automatisch verwendet, wenn sie sich unter ~/.config/abaddon/abaddon.ini befindet, und es gibt keinen abaddon.ini im Arbeitsverzeichnis
Befolgen Sie diese Anweisungen.
Discord mag es, Konten zu deaktivieren und sie dazu zu zwingen, seine Passwörter zurückzusetzen, wenn er der Meinung ist, dass der Benutzer ein Spam -Bot ist oder sein Konto möglicherweise kompromittiert hat. Während der offizielle Kunde immer noch häufig in den Spam -Filter gefangen ist, stören Drittanbieter -Kunden den Spam -Filter häufiger. Wenn Sie davon erwischt werden, können Sie es normalerweise ansprechen und es wiederherstellen lassen. Hier sind einige Dinge, die Sie vielleicht mit dem offiziellen Kunden tun möchten, wenn Sie besonders Angst haben, den Zorn des Spamfilters hervorzurufen:
| Wähler | Beschreibung |
|---|---|
.app-window | Auf alle Fenster angewendet. Dies bedeutet das Hauptfenster und alle Popups |
.app-popup | Zusätzliche Klasse für .app-window S Wenn das Fenster nicht das Hauptfenster ist |
.channel-list | Container der Kanalliste |
.messages | Container von Benutzernachrichten |
.message-container | Der Container, der die Nachrichten eines Benutzers enthält |
.message-container-author | Das Autor -Etikett für einen Nachrichtenbehälter |
.message-container-timestamp | Das Timestamp -Etikett für einen Nachrichtenbehälter |
.message-container-avatar | Avatar für einen Benutzer in einer Nachricht |
.message-container-extra | Etikett mit Bot/Webhook |
.message-text | Der Text einer Benutzernachricht |
.pending | Zusätzliche Klasse von .message-Text für Nachrichten, die anhängig sind, um sie zu senden |
.failed | Zusätzliche Klasse von .message-Text für Nachrichten, die nicht gesendet wurden |
.message-attachment-box | Enthält Anhangsinformationen |
.message-reply | Container für die antwortete Nachricht in einer Antwort (diese Elemente haben auch .Message-Text-Set) |
.message-input | Angewendet auf den Chat -Eingangsbehälter |
.replying | Zusätzliche Klasse für Chat -Eingabebehälter Wenn derzeit eine Antwort erstellt wird |
.reaction-box | Enthält ein Reaktionsbild und die Anzahl |
.reacted | Zusätzliche Klasse für Reaktionsbox, wenn der Benutzer mit einer bestimmten Reaktion reagiert hat |
.reaction-count | Enthält die Anzahl für die Reaktion |
.completer | Container für den Meldungsabschluss |
.completer-entry | Container für einen einzelnen Eintrag in der Vervollständigung |
.completer-entry-label | Enthält das Etikett für einen Eintrag in der Fertigstellung |
.completer-entry-image | Enthält das Bild für einen Eintrag in der Fertigstellung |
.embed | Container für eine Nachricht einbetten |
.embed-author | Der Autor einer Einbettung |
.embed-title | Der Titel einer Einbettung |
.embed-description | Die Beschreibung einer Einbettung |
.embed-field-title | Der Titel eines Einbettungsfelds |
.embed-field-value | Der Wert eines Einbettungsfeldes |
.embed-footer | Die Fußzeile einer Einbettung |
.member-list | Container der Mitgliedsliste |
.typing-indicator | Der Typing -Indikator (auch für Antworten verwendet) |
Verwendet in neu beweisbarer Listen -Implementierung:
| Wähler |
|---|
.drag-icon |
.drag-hover-top |
.drag-hover-bottom |
Verwendet in Gildeneinstellungen Popup:
| Wähler | Beschreibung |
|---|---|
.guild-settings-window | Container für die Liste der Mitglieder im Mitgliederbereich |
.guild-members-pane-list | |
.guild-members-pane-info | Container für Mitgliedsinformationen |
.guild-roles-pane-list | Container für die Liste der Rollen im Rollenbereich |
Verwendet im Profilpopup:
| Wähler | Beschreibung |
|---|---|
.mutual-friend-item | Angewendet auf jeden Artikel in der Liste der gegenseitigen Freunde |
.mutual-friend-item-name | Name im Gegenstand gegenseitiger Freund |
.mutual-friend-item-avatar | Avatar im Gegenstand gegenseitiger Freund |
.mutual-guild-item | Angewendet auf jeden Artikel in der Liste der gegenseitigen Gilden |
.mutual-guild-item-name | Name im Gegenstand gegenseitiger Gilden |
.mutual-guild-item-icon | Ikone im Gegenstand gegenseitiger Gilden |
.mutual-guild-item-nick | Benutzerspitzname im Gegenstand gegenseitiger Gilden |
.profile-connection | Angewendet auf jedes Element in der Liste der Benutzerverbindungen |
.profile-connection-label | Beschriftung im Profilverbindungselement |
.profile-connection-check | Checkmark in verifizierten Profilverbindungselementen |
.profile-connections | Container für Profilverbindungen |
.profile-notes | Container für Notizen im Profilfenster |
.profile-notes-label | Etikett mit "Hinweis" |
.profile-notes-text | Tatsächlicher Notiz Text |
.profile-info-pane | Angewendet in den Abschnitt "Info -Profile Popup" an Container angewendet |
.profile-info-created | Etikett für das Erstellungsdatum des Profils |
.user-profile-window | |
.profile-main-container | Innenbehälter für Profil |
.profile-avatar | |
.profile-username | Anzeigename des Benutzers (Benutzername für die Rückwärtskompatibilität) |
.profile-username-nondisplay | Der tatsächliche Benutzername des Benutzers |
.profile-switcher | Schaltflächen, die zum Schalten des angezeigten Abschnitts des Profils verwendet werden |
.profile-stack | Container für Profilinformationen, die zwischen dem Wechsel geändert werden können |
.profile-badges | Behälter für Abzeichen |
.profile-badge |
Einstellungen werden (vorerst) durch Bearbeitung abaddon.ini konfiguriert. Das Format ähnelt dem Standard -Windows -INI -Format mit Ausnahme :
# wird verwendet, um Kommentare zu beginnen, im Gegensatz zu ;Warnung : Sie sollten diese bearbeiten, während der Kunde geschlossen ist, obwohl es eine Option zum Nachladen beim Ausführen gibt.
Diese Auflistung wird nach Abschnitt organisiert. Beispielsweise würde Memory_DB durch Hinzufügen von memory_db = true unter der Zeile [discord] festgelegt.
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
gateway | Saite | URL für Discord Gateway überschreiben. Muss ein JSON -Format sein und verwenden ZLIB -Stream -Komprimierung | |
api_base | Saite | Basis -URL für Discord -API überschreiben | |
memory_db | boolean | FALSCH | Wenn dies der Fall ist, werden Discord -Daten im Gegensatz zur Festplatte im Speicher gehalten |
token | Saite | Discord -Token, das sich verwendet hat, um sich anzumelden. Dies kann aus dem Menü festgelegt werden | |
prefetch | boolean | FALSCH | Wenn zutreffend, werden neue Nachrichten dazu führen, dass die Avatar- und Bildanhänge automatisch heruntergeladen werden |
autoconnect | boolean | FALSCH | Autoconnect to Discord |
keychain | boolean | WAHR | Token in Systemschlüsselketten speichern (wenn er mit Unterstützung zusammengestellt wird) |
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
user_agent | Saite | Legt die Benutzer-Agent so fest, dass sie in HTTP-Anforderungen an die Discord-API verwendet werden (ohne Medien/Bilder). | |
concurrent | int | 20 | Wie viele Bilder können gleichzeitig abgerufen werden |
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
member_list_discriminator | boolean | WAHR | Benutzerdiskriminatoren in der Mitgliedsliste anzeigen |
stock_emojis | boolean | WAHR | Erlauben Sie Abaddon, Unicode -Emojis durch Bilder von emojis.bin zu ersetzen, und muss falsch sein, damit GTK Emojis selbst rendert |
custom_emojis | boolean | WAHR | Laden und verwenden Sie benutzerdefinierte Discord -Emojis |
css | Saite | Pfad zur Haupt -CSS -Datei | |
animations | boolean | WAHR | Verwenden Sie animierte Bilder, sofern verfügbar (z. B. Server -Symbole, Emojis, Avatare). falsche Mittelwerte werden statische Bilder verwendet |
animated_guild_hover_only | boolean | WAHR | Nur animierte Gildenikonen, wenn die Gilde überstrichen wird |
owner_crown | boolean | WAHR | Zeigen Sie eine Krone neben dem Besitzer |
unreads | boolean | WAHR | Zeigen Sie ungelesene Indikatoren und erwähnen Sie Abzeichen |
save_state | boolean | WAHR | Speichern Sie den Status der GUI (aktive Kanäle, Registerkarten, erweiterte Kanäle). |
alt_menu | boolean | FALSCH | Halten Sie das Menü verborgen |
hide_to_tray | boolean | FALSCH | Verstecken Sie Abaddon am Fenster in der Systemschale in der Schließung |
show_deleted_indicator | boolean | WAHR | Anzeigen von [gelöschten] Anzeige neben gelöschten Nachrichten anzeigen, anstatt die Nachricht tatsächlich zu löschen |
font_scale | doppelt | skalieren Schriftart. 1 ist unverändert | |
image_embed_clamp_width | int | 400 | maximale Breite der Bildeinbettungen |
image_embed_clamp_height | int | 300 | Maximale Höhe der Bildbetts |
classic_channels | boolean | FALSCH | Verwenden Sie eine klassische Schnittstelle im Discord-Stil für die Server-/Kanalliste |
classic_change_guild_on_open | boolean | WAHR | Ändern Sie die angezeigte Gilde bei der Auswahl eines Kanals (klassische Kanalliste) |
| Einstellung | Typ | Beschreibung |
|---|---|---|
expandercolor | Saite | Farbe für den Expander in der Kanalliste zu verwenden |
nsfwchannelcolor | Saite | Die Farbe für NSFW -Kanäle in der Kanalliste zu verwenden |
mentionbadgecolor | Saite | Hintergrundfarbe für erwähnte Abzeichen |
mentionbadgetextcolor | Saite | Farbe zu verwenden für die Zahl, die in erwähnten Abzeichen angezeigt wird |
unreadcolor | Saite | Farbe für den ungelesenen Indikator zu verwenden |
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
enabled | boolean | Richtig (wenn nicht unter Windows) | Aktivieren Sie Desktop -Benachrichtigungen |
playsound | boolean | WAHR | Benachrichtigungsgeräusche aktivieren. Benötigt Enable_Notification_sounds = true in CMake |
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
vad | Saite | rnnoise wenn aktiv | Methode zur Erkennung der Sprachaktivität. Veränderlich in UI |
backends | Saite | leer | Priorität ändern, wenn Miniaudio initialisiert: wasapi;dsound;winmm;coreaudio;sndio;audio4;oss;pulseaudio;alsa;jack |
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
hideconsole | boolean | FALSCH | Konsole beim Start verstecken |
| Variable | Beschreibung |
|---|---|
ABADDON_NO_FC | (Nur Windows) Verwenden Sie keine benutzerdefinierte Schriftartkonfiguration |
ABADDON_CONFIG | Ändern Sie den Pfad der Konfigurationsdatei zu verwenden. relativ zu CWD oder kann absolut sein |