Client de discorde alternative fabriqué en C ++ avec GTK
![]() | ![]() |
![]() | ![]() |
Caractéristiques actuelles:
1 - Abaddon essaie de son mieux (mais n'est pas parfait) pour faire penser à Discord que c'est un client Web légitime. Certaines des choses faites pour ce faire incluent: l'utilisation d'un agent utilisateur du navigateur, l'envoi du même message d'identification que le client Web officiel fait, en utilisant API V9 Points de terminaison dans tous les cas, et ne pas utiliser de points de terminaison que le client Web n'utilise pas normalement. Cependant, il y a encore quelques incohérences plus petites. Par exemple, le client Web envoie beaucoup de télémétrie via le point de terminaison /science (UBlock Origin l'arrête) ainsi que dans les en-têtes de toutes les demandes.
Voir ici pour des choses que vous voudrez peut-être éviter si vous craignez d'être pris dans le filtre du spam.
2 - Les emojis Unicode sont substitués manuellement par opposition à Rendu par GTK sur les plates-formes non Windows. Cela peut être modifié avec le paramètre stock_emojis comme indiqué au bas de cette lecture. Une police basée sur le CBDT utilisant Twemoji est fournie pour permettre à GTK de rendre les emojis nativement sur Windows.
3 - Il y a des incohérences avec l'état du thread qui pourraient être rencontrées dans des cas plus rares, mais ils sont le résultat de problèmes fondamentaux avec la mise en œuvre du fil de 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-develRemarque: Sur les anciennes versions de Fedora, vous devrez peut-être installer GTKMM30-Devel au lieu de GTKMM3.0-Devel. Utilisez
dnf search gtkmm3pour voir les packages disponibles.
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 ..makeVersion de dernière version: https://github.com/uowuo/abaddon/releases/latest
CI:
AVERTISSEMENT : Si vous utilisez Windows, assurez-vous de commencer le répertoire
bin
Les deux dossiers du dossier res ( res/res et res/css ) sont nécessaires. Windows utilise également le dossier fonts . Vous pouvez les mettre directement à côté de l'exécutable. Sur Linux, css et res peuvent également être chargés à partir de ~/.local/share/abaddon ou /usr/share/abaddon
abaddon.ini sera également automatiquement utilisé si elle est située à ~/.config/abaddon/abaddon.ini et il n'y a pas abaddon.ini dans le répertoire de travail
Suivez ces instructions.
Discord aime désactiver les comptes / les forcer à réinitialiser leurs mots de passe s'ils pensent que l'utilisateur est un bot de spam ou a potentiellement compromis son compte. Bien que le client officiel obtient encore souvent les utilisateurs pris dans le filtre du spam, les clients tiers ont tendance à bouleverser le filtre du spam plus souvent. Si vous vous faites prendre par cela, vous pouvez généralement le faire appel et le faire restaurer. Voici quelques choses que vous voudrez peut-être faire avec le client officiel à la place si vous avez particulièrement peur d'évoquer la colère du filtre de spam:
| Sélecteur | Description |
|---|---|
.app-window | Appliqué à toutes les fenêtres. Cela signifie la fenêtre principale et toutes les popups |
.app-popup | Classe supplémentaire pour .app-window s lorsque la fenêtre n'est pas la fenêtre principale |
.channel-list | Conteneur de la liste des canaux |
.messages | Conteneur des messages utilisateur |
.message-container | Le conteneur qui contient les messages d'un utilisateur |
.message-container-author | L'étiquette de l'auteur pour un conteneur de messages |
.message-container-timestamp | L'étiquette d'horodatage pour un conteneur de messages |
.message-container-avatar | Avatar pour un utilisateur dans un message |
.message-container-extra | Étiquette contenant du bot / webhook |
.message-text | Le texte d'un message utilisateur |
.pending | Classe supplémentaire de .Message-texte pour les messages en attente à envoyer |
.failed | Classe supplémentaire de .Message-Text pour les messages qui n'ont pas été envoyés |
.message-attachment-box | Contient des informations de pièce jointe |
.message-reply | Conteneur pour le message répondu dans une réponse (ces éléments auront également un ensemble de texte. |
.message-input | Appliqué au conteneur d'entrée de chat |
.replying | Classe supplémentaire pour le conteneur d'entrée de chat lorsqu'une réponse est actuellement en cours |
.reaction-box | Contient une image de réaction et le nombre |
.reacted | Classe supplémentaire pour la boîte de réaction lorsque l'utilisateur a réagi avec une réaction particulière |
.reaction-count | Contient le nombre de réaction |
.completer | Conteneur pour le message complexe |
.completer-entry | Conteneur pour une seule entrée dans le complexe |
.completer-entry-label | Contient l'étiquette pour une entrée dans le complexe |
.completer-entry-image | Contient l'image pour une entrée dans le complexe |
.embed | Conteneur pour un message intégré |
.embed-author | L'auteur d'une intégration |
.embed-title | Le titre d'une intégration |
.embed-description | La description d'une intégration |
.embed-field-title | Le titre d'un champ d'intégration |
.embed-field-value | La valeur d'un champ intégré |
.embed-footer | Le pied de page d'une intégration |
.member-list | Conteneur de la liste des membres |
.typing-indicator | L'indicateur de frappe (également utilisé pour les réponses) |
Utilisé dans la mise en œuvre de la liste réorganisable:
| Sélecteur |
|---|
.drag-icon |
.drag-hover-top |
.drag-hover-bottom |
Utilisé dans les paramètres de guilde popup:
| Sélecteur | Description |
|---|---|
.guild-settings-window | Conteneur pour la liste des membres du volet des membres |
.guild-members-pane-list | |
.guild-members-pane-info | Conteneur pour les informations des membres |
.guild-roles-pane-list | Conteneur pour la liste des rôles dans le volet des rôles |
Utilisé dans la fenêtre contextuelle de profil:
| Sélecteur | Description |
|---|---|
.mutual-friend-item | Appliqué à chaque élément de la liste des amis communs |
.mutual-friend-item-name | Nom dans un élément d'ami mutuel |
.mutual-friend-item-avatar | Avatar dans un élément d'ami commun |
.mutual-guild-item | Appliqué à chaque élément de la liste des guildes mutuelles |
.mutual-guild-item-name | Nom dans Mutual Guild Article |
.mutual-guild-item-icon | Icône dans Mutual Guild Item |
.mutual-guild-item-nick | Surnom d'utilisateur dans l'élément de guilde mutuelle |
.profile-connection | Appliqué à chaque élément de la liste des connexions utilisateur |
.profile-connection-label | Étiquette dans l'élément de connexion de profil |
.profile-connection-check | Vérifiez les éléments de connexion du profil vérifié |
.profile-connections | Conteneur pour les connexions de profil |
.profile-notes | Conteneur pour notes dans la fenêtre de profil |
.profile-notes-label | Étiquette qui dit "note" |
.profile-notes-text | Texte de note réel |
.profile-info-pane | Appliqué au conteneur pour la section d'informations de la fenêtre contextuelle de profil |
.profile-info-created | Étiquette pour la date de création du profil |
.user-profile-window | |
.profile-main-container | Conteneur intérieur pour profil |
.profile-avatar | |
.profile-username | Nom d'affichage de l'utilisateur (nom d'utilisateur pour la compatibilité en arrière) |
.profile-username-nondisplay | Nom d'utilisateur réel de l'utilisateur |
.profile-switcher | Boutons utilisés pour changer la section affichée du profil |
.profile-stack | Conteneur pour les informations de profil qui peuvent être commutées entre |
.profile-badges | Conteneur pour badges |
.profile-badge |
Les paramètres sont configurés (pour l'instant) en modifiant abaddon.ini . Le format est similaire au format Windows INI standard sauf :
# est utilisé pour commencer les commentaires par opposition à ;AVERTISSEMENT : vous devez les modifier pendant que le client est fermé, même s'il y a une option à recharger lors de l'exécution.
Cette liste est organisée par section. Par exemple, Memory_DB serait défini en ajoutant memory_db = true sous la ligne [discord]
| Paramètre | Taper | Défaut | Description |
|---|---|---|---|
gateway | chaîne | Remplacez l'URL pour Discord Gateway. Doit être JSON Format et utiliser la compression de flux ZLIB | |
api_base | chaîne | remplacer l'URL de base pour l'API Discord | |
memory_db | booléen | FAUX | Si cela est vrai, les données Discord seront conservées en mémoire par opposition au disque |
token | chaîne | Token Discord utilisé pour se connecter, cela peut être défini à partir du menu | |
prefetch | booléen | FAUX | Si cela est vrai, les nouveaux messages entraîneront le téléchargement automatique de l'avatar et de l'image |
autoconnect | booléen | FAUX | Autoconnecte à Discord |
keychain | booléen | vrai | Stocker le jeton dans le trousseau système (s'il est compilé avec le support) |
| Paramètre | Taper | Défaut | Description |
|---|---|---|---|
user_agent | chaîne | Définit l'agent utilisateur à utiliser dans les demandes HTTP à l'API Discord (sans compter les médias / images) | |
concurrent | int | 20 | Combien d'images peuvent être récupérées simultanément |
| Paramètre | Taper | Défaut | Description |
|---|---|---|---|
member_list_discriminator | booléen | vrai | Afficher les discriminateurs des utilisateurs dans la liste des membres |
stock_emojis | booléen | vrai | Permettre à Abaddon de remplacer les emojis Unicode avec des images d'Emojis.bin, doit être fausse pour permettre à GTK de rendre les emojis lui-même |
custom_emojis | booléen | vrai | Télécharger et utiliser des emojis de discorde personnalisés |
css | chaîne | Chemin vers le fichier CSS principal | |
animations | booléen | vrai | Utilisez des images animées le cas échéant (par exemple, les icônes du serveur, les emojis, les avatars). Les images statiques fausses sont utilisées |
animated_guild_hover_only | booléen | vrai | uniquement animer les icônes de guilde lorsque la guilde est en train de planer |
owner_crown | booléen | vrai | montrer une couronne à côté du propriétaire |
unreads | booléen | vrai | Afficher les indicateurs non lus et mentionner les badges |
save_state | booléen | vrai | Enregistrer l'état de l'interface graphique (canaux actifs, onglets, canaux étendus) |
alt_menu | booléen | FAUX | Gardez le menu caché sauf s'il est révélé avec une clé Alt |
hide_to_tray | booléen | FAUX | Cachez Abaddon au plateau système à la fenêtre Ferme |
show_deleted_indicator | booléen | vrai | Afficher l'indicateur [supprimé] à côté des messages supprimés au lieu de supprimer réellement le message |
font_scale | double | Rendu d'échelle des polices. 1 est inchangé | |
image_embed_clamp_width | int | 400 | Largeur maximale des intérêts d'image |
image_embed_clamp_height | int | 300 | hauteur maximale des intérêts d'image |
classic_channels | booléen | FAUX | Utilisez une interface de style discorde classique pour la liste des serveurs / canaux |
classic_change_guild_on_open | booléen | vrai | Modifier une guilde affichée lors de la sélection d'un canal (liste de canaux classiques) |
| Paramètre | Taper | Description |
|---|---|---|
expandercolor | chaîne | Couleur à utiliser pour l'expanseur dans la liste des canaux |
nsfwchannelcolor | chaîne | Couleur à utiliser pour les canaux NSFW dans la liste des canaux |
mentionbadgecolor | chaîne | Couleur d'arrière-plan pour mentionner les badges |
mentionbadgetextcolor | chaîne | couleur à utiliser pour le numéro affiché sur les badges mentionnés |
unreadcolor | chaîne | couleur à utiliser pour l'indicateur non lu |
| Paramètre | Taper | Défaut | Description |
|---|---|---|---|
enabled | booléen | Vrai (sinon sous Windows) | Activer les notifications de bureau |
playsound | booléen | vrai | Activer les sons de notification. Nécessite activer_notification_sounds = true in cmake |
| Paramètre | Taper | Défaut | Description |
|---|---|---|---|
vad | chaîne | rnnoise si activé, porte autrement | Méthode utilisée pour la détection d'activité vocale. Changeable dans l'interface utilisateur |
backends | chaîne | vide | Changer la priorité du backend lors de l'initialisation de MiniIdio: wasapi;dsound;winmm;coreaudio;sndio;audio4;oss;pulseaudio;alsa;jack |
| Paramètre | Taper | Défaut | Description |
|---|---|---|---|
hideconsole | booléen | FAUX | Masquer la console au démarrage |
| variable | Description |
|---|---|
ABADDON_NO_FC | (Windows uniquement) n'utilisez pas de configuration de police personnalisée |
ABADDON_CONFIG | Modifier le chemin du fichier de configuration à utiliser. par rapport à CWD ou peut être absolu |