Cliente de discordia alternativo hecho en C ++ con GTK
![]() | ![]() |
![]() | ![]() |
Características actuales:
1 - Abaddon hace lo mejor que puede (aunque no es perfecto) para hacer que Discord piense que es un cliente web legítimo. Algunas de las cosas hechas para hacer esto incluyen: usar un agente de usuario del navegador, enviar el mismo mensaje de identificación que hace el cliente web oficial, el uso de puntos finales API V9 en todos los casos y no usar puntos finales que el cliente web normalmente no use. Sin embargo, todavía hay algunas inconsistencias más pequeñas. Por ejemplo, el cliente web envía mucha telemetría a través del punto final /science (Ublock Origin detiene esto), así como en los encabezados de todas las solicitudes.
Vea aquí las cosas que puede evitar si le preocupa que lo atrapen en el filtro de spam.
2 - Los emojis unicode se sustituyen manualmente en lugar de ser representados por GTK en plataformas no Windows. Esto se puede cambiar con la configuración stock_emojis como se muestra en la parte inferior de este readme. Se proporciona una fuente basada en CBDT que usa twemoji para permitir que GTK represente los emojis de forma nativa en las ventanas.
3 - Hay algunas inconsistencias con el estado de subprocesos que podrían encontrarse en algunos casos más poco comunes, pero son el resultado de problemas fundamentales con la implementación del hilo 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-develNota: En versiones anteriores de Fedora, es posible que necesite instalar GTKMM30-devel en lugar de GTKMM3.0-devel. Use
dnf search gtkmm3para ver los paquetes 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 ..makeÚltima versión de lanzamiento: https://github.com/uowuo/abaddon/releases/latest
CI:
Advertencia : si usa Windows, asegúrese de comenzar desde el directorio
bin
Son necesarias las dos carpetas dentro de la carpeta res res/res y res/css ). Windows también usa la carpeta fonts . Puede ponerlos directamente al lado del ejecutable. En Linux, css y res también se pueden cargar desde ~/.local/share/abaddon o /usr/share/abaddon
abaddon.ini también se usará automáticamente si se encuentra en ~/.config/abaddon/abaddon.ini y no hay abaddon.ini en el directorio de trabajo
Sigue estas instrucciones.
Discord le gusta deshabilitar las cuentas/obligarlas a restablecer sus contraseñas si creen que el usuario es un bot de correo no deseado o potencialmente tuvo su cuenta comprometida. Si bien el cliente oficial todavía a menudo queda atrapado en el filtro de spam, los clientes de terceros tienden a alterar el filtro de spam con más frecuencia. Si te atrapan, generalmente puedes apelarlo y restaurarlo. Aquí hay algunas cosas que quizás desee hacer con el cliente oficial si tiene particularmente miedo de evocar la ira del filtro de spam:
| Selector | Descripción |
|---|---|
.app-window | Aplicado a todas las ventanas. Esto significa la ventana principal y todas las ventanas emergentes |
.app-popup | Clase adicional para .app-window s cuando la ventana no es la ventana principal |
.channel-list | Contenedor de la lista de canales |
.messages | Contenedor de mensajes de usuario |
.message-container | El contenedor que contiene los mensajes de un usuario |
.message-container-author | La etiqueta del autor para un contenedor de mensajes |
.message-container-timestamp | La etiqueta de la marca de tiempo para un contenedor de mensajes |
.message-container-avatar | Avatar para un usuario en un mensaje |
.message-container-extra | Etiqueta que contiene bot/webhook |
.message-text | El texto de un mensaje de usuario |
.pending | Clase adicional de. Message-Text para los mensajes pendientes que se enviarán |
.failed | Clase adicional de. Message-Text para mensajes que no se enviaron |
.message-attachment-box | Contiene información de archivo adjunto |
.message-reply | Contenedor para el mensaje respondido en una respuesta (estos elementos también tendrán un conjunto de texto. Message) |
.message-input | Aplicado al contenedor de entrada de chat |
.replying | Clase adicional para contenedor de entrada de chat cuando se está creando una respuesta actualmente |
.reaction-box | Contiene una imagen de reacción y el recuento |
.reacted | Clase adicional para la caja de reacción cuando el usuario ha reaccionado con una reacción particular |
.reaction-count | Contiene el recuento de reacción |
.completer | Contenedor para el finalista de mensajes |
.completer-entry | Contenedor para una sola entrada en el finalista |
.completer-entry-label | Contiene la etiqueta para una entrada en el finalista |
.completer-entry-image | Contiene la imagen para una entrada en el finalista |
.embed | Contenedor para un mensaje incrustado |
.embed-author | El autor de una incrustación |
.embed-title | El título de una incrustación |
.embed-description | La descripción de una incrustación |
.embed-field-title | El título de un campo de incrustación |
.embed-field-value | El valor de un campo de incrustación |
.embed-footer | El pie de página de una incrustación |
.member-list | Contenedor de la lista de miembros |
.typing-indicator | El indicador de tipificación (también utilizado para respuestas) |
Utilizado en la implementación de la lista reordenable:
| Selector |
|---|
.drag-icon |
.drag-hover-top |
.drag-hover-bottom |
Usado en la configuración del gremio emergente:
| Selector | Descripción |
|---|---|
.guild-settings-window | Contenedor para la lista de miembros en el panel de los miembros |
.guild-members-pane-list | |
.guild-members-pane-info | Contenedor para la información de los miembros |
.guild-roles-pane-list | Contenedor para la lista de roles en el panel de roles |
Usado en la ventana emergente de perfil:
| Selector | Descripción |
|---|---|
.mutual-friend-item | Aplicado a cada elemento de la lista de amigos en común |
.mutual-friend-item-name | Nombre en el artículo de un amigo en común |
.mutual-friend-item-avatar | Avatar en el elemento de amigo en común |
.mutual-guild-item | Aplicado a cada elemento de la lista de gremios mutuos |
.mutual-guild-item-name | Nombre en el artículo del gremio mutuo |
.mutual-guild-item-icon | Ícono en el artículo del gremio mutuo |
.mutual-guild-item-nick | Apodo de usuario en el artículo de Mutual Guild |
.profile-connection | Aplicado a cada elemento de la lista de conexiones de usuario |
.profile-connection-label | Etiqueta en el elemento de conexión de perfil |
.profile-connection-check | Marca de verificación en elementos de conexión de perfil verificado |
.profile-connections | Contenedor para conexiones de perfil |
.profile-notes | Contenedor para notas en la ventana de perfil |
.profile-notes-label | Etiqueta que dice "nota" |
.profile-notes-text | Texto de nota real |
.profile-info-pane | Aplicado al contenedor para la sección de información de la ventana emergente de perfil |
.profile-info-created | Etiqueta para la fecha de creación del perfil |
.user-profile-window | |
.profile-main-container | Contenedor interno para el perfil |
.profile-avatar | |
.profile-username | Nombre de la pantalla del usuario (nombre de usuario para la compatibilidad hacia atrás) |
.profile-username-nondisplay | Nombre de usuario real del usuario |
.profile-switcher | Botones utilizados para cambiar la sección vista del perfil |
.profile-stack | Contenedor para información de perfil que se puede cambiar entre |
.profile-badges | Contenedor para insignias |
.profile-badge |
Las configuraciones se configuran (por ahora) editando abaddon.ini . El formato es similar al formato estándar de Windows INI excepto :
# se usa para comenzar los comentarios en lugar de ;Advertencia : debe editarlos mientras el cliente está cerrado, a pesar de que hay una opción para recargar mientras se ejecuta.
Este listado está organizado por sección. Por ejemplo, Memory_DB se establecería agregando memory_db = true en la línea [discord]
| Configuración | Tipo | Por defecto | Descripción |
|---|---|---|---|
gateway | cadena | anular URL para Discord Gateway. Debe ser formato JSON y usar la compresión de Zlib Stream | |
api_base | cadena | anular URL base para la API de discordia | |
memory_db | booleano | FALSO | Si es cierto, los datos de Discord se mantendrán en la memoria en lugar de en el disco |
token | cadena | Token de discordia utilizado para iniciar sesión, esto se puede configurar en el menú | |
prefetch | booleano | FALSO | Si es cierto, los nuevos mensajes harán que los archivos adjuntos de avatar y imagen se descarguen automáticamente |
autoconnect | booleano | FALSO | Autoconnect to Discord |
keychain | booleano | verdadero | Almacene el token en el llavero del sistema (si se compila con soporte) |
| Configuración | Tipo | Por defecto | Descripción |
|---|---|---|---|
user_agent | cadena | Establece el agente de usuario para usar en las solicitudes HTTP a la API de Discord (sin incluir medios/imágenes) | |
concurrent | intencionalmente | 20 | cuántas imágenes se pueden recuperar simultáneamente |
| Configuración | Tipo | Por defecto | Descripción |
|---|---|---|---|
member_list_discriminator | booleano | verdadero | Mostrar discriminadores de usuarios en la lista de miembros |
stock_emojis | booleano | verdadero | Permitir que Abaddon sustituya los emojis unicode con imágenes de emojis.bin, debe ser falso para permitir que GTK represente los emojis en sí mismos |
custom_emojis | booleano | verdadero | Descargar y usar emojis de discords personalizados |
css | cadena | ruta al archivo CSS principal | |
animations | booleano | verdadero | Use imágenes animadas donde estén disponibles (por ejemplo, iconos del servidor, emojis, avatares). falsos significa que se utilizarán imágenes estáticas |
animated_guild_hover_only | booleano | verdadero | solo animar íconos del gremio cuando el gremio está siendo rondado |
owner_crown | booleano | verdadero | Mostrar una corona al lado del propietario |
unreads | booleano | verdadero | Mostrar indicadores no leídos y mencionar insignias |
save_state | booleano | verdadero | Guardar el estado de la GUI (canales activos, pestañas, canales expandidos) |
alt_menu | booleano | FALSO | Mantenga el menú oculto a menos que se revele con la tecla Alt |
hide_to_tray | booleano | FALSO | ocultar Abaddon a la bandeja del sistema en la ventana Cerrar |
show_deleted_indicator | booleano | verdadero | Mostrar indicador [eliminado] junto a mensajes eliminados en lugar de eliminar realmente el mensaje |
font_scale | doble | Representación de fuentes de escala. 1 no ha cambiado | |
image_embed_clamp_width | intencionalmente | 400 | ancho máximo de la imagen incrustaciones |
image_embed_clamp_height | intencionalmente | 300 | Altura máxima de la imagen incrusta |
classic_channels | booleano | FALSO | Use la interfaz clásica de estilo Discord para la lista de servidores/canales |
classic_change_guild_on_open | booleano | verdadero | Cambiar el gremio mostrado al seleccionar un canal (lista de canales clásico) |
| Configuración | Tipo | Descripción |
|---|---|---|
expandercolor | cadena | color para usar para el expansor en la lista de canales |
nsfwchannelcolor | cadena | Color para usar para los canales NSFW en la lista de canales |
mentionbadgecolor | cadena | Color de fondo para insignias de mención |
mentionbadgetextcolor | cadena | Color para usar para el número que se muestra en las insignias de mención |
unreadcolor | cadena | Color para usar para el indicador no leído |
| Configuración | Tipo | Por defecto | Descripción |
|---|---|---|---|
enabled | booleano | Verdadero (si no en Windows) | Habilitar notificaciones de escritorio |
playsound | booleano | verdadero | Habilitar sonidos de notificación. Requiere habilitar_notification_sounds = true en cmake |
| Configuración | Tipo | Por defecto | Descripción |
|---|---|---|---|
vad | cadena | rnnoise si está habilitado, puerta de lo contrario | Método utilizado para la detección de actividad de voz. Cambiable en la interfaz de usuario |
backends | cadena | vacío | Prioridad del backend de cambio Al inicializar Miniaudio: wasapi;dsound;winmm;coreaudio;sndio;audio4;oss;pulseaudio;alsa;jack |
| Configuración | Tipo | Por defecto | Descripción |
|---|---|---|---|
hideconsole | booleano | FALSO | Ocultar consola en inicio |
| variable | Descripción |
|---|---|
ABADDON_NO_FC | (Solo Windows) no use configuración de fuentes personalizadas |
ABADDON_CONFIG | Cambiar la ruta del archivo de configuración para usar. en relación con CWD o puede ser absoluto |