Cliente Discord alternativo fabricado em C ++ com GTK
![]() | ![]() |
![]() | ![]() |
Recursos atuais:
1 - Abaddon tenta o seu melhor (embora não seja perfeito) para fazer a Discord achar que é um cliente da web legítimo. Algumas das coisas feitas para fazer isso incluem: Usando um agente do usuário do navegador, enviando a mesma mensagem de identificação que o cliente oficial, usando pontos de extremidade API V9 em todos os casos e não usando pontos de extremidade que o cliente da Web normalmente não usa. Ainda existem algumas inconsistências menores, no entanto. Por exemplo, o Web Client envia muita telemetria por meio do terminal /science (o Ublock Origin interrompe isso), bem como nos cabeçalhos de todas as solicitações.
Veja aqui as coisas que você pode querer evitar se estiver preocupado em ser pego no filtro de spam.
2 - Os emojis Unicode são substituídos manualmente, em oposição a renderizados pelo GTK em plataformas que não são de janelas. Isso pode ser alterado com a configuração stock_emojis , como mostrado na parte inferior deste ReadMe. Uma fonte baseada em CBDT usando Twemoji é fornecida para permitir que o GTK renderize emojis nativamente no Windows.
3 - Existem algumas inconsistências no estado de threads que podem ser encontradas em alguns casos mais incomuns, mas são o resultado de problemas fundamentais com a implementação do thread da 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: Em versões mais antigas do Fedora, talvez seja necessário instalar o GTKMM30-DEVEL em vez do GTKMM3.0-DEVEL. Use
dnf search gtkmm3para ver os pacotes disponíveis.
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 ..makeVersão mais recente de lançamento: https://github.com/uowuo/abaddon/releases/latest
CI:
Aviso : se você usar o Windows, não deixe de começar no diretório
bin
As duas pastas dentro da pasta res ( res/res e res/css ) são necessárias. O Windows também usa a pasta fonts . Você pode colocá -los diretamente ao lado do executável. No Linux, css e res também podem ser carregados de ~/.local/share/abaddon ou /usr/share/abaddon
abaddon.ini também será usado automaticamente se localizado em ~/.config/abaddon/abaddon.ini e não há abaddon.ini no diretório de trabalho
Siga estas instruções.
A discórdia gosta de desativar contas/forçá -las a redefinir suas senhas se acharem que o usuário é um bot spam ou potencialmente teve sua conta comprometida. Enquanto o cliente oficial ainda geralmente leva os usuários no filtro de spam, os clientes de terceiros tendem a perturbar o filtro de spam com mais frequência. Se você for pego por isso, geralmente poderá recorrer e restaurá -lo. Aqui estão algumas coisas que você pode querer fazer com o cliente oficial, em vez disso, se você tiver particular medo de evocar a ira do filtro de spam:
| Seletor | Descrição |
|---|---|
.app-window | Aplicado a todas as janelas. Isso significa a janela principal e todos os pop -ups |
.app-popup | Classe adicional para .app-window s Quando a janela não é a janela principal |
.channel-list | Recipiente da lista de canais |
.messages | Contêiner de mensagens do usuário |
.message-container | O contêiner que mantém as mensagens de um usuário |
.message-container-author | O rótulo do autor para um contêiner de mensagem |
.message-container-timestamp | A etiqueta de data e hora para um contêiner de mensagem |
.message-container-avatar | Avatar para um usuário em uma mensagem |
.message-container-extra | Etiqueta contendo bot/webhook |
.message-text | O texto de uma mensagem do usuário |
.pending | Classe extra de texto .Message para mensagens pendentes para serem enviadas |
.failed | Classe extra de texto .Message para mensagens que não foram enviadas |
.message-attachment-box | Contém informações de anexo |
.message-reply | Container para a mensagem respondida em uma resposta (esses elementos também terão. |
.message-input | Aplicado ao contêiner de entrada de bate -papo |
.replying | Classe extra para contêiner de entrada de bate -papo quando uma resposta está sendo criada no momento |
.reaction-box | Contém uma imagem de reação e a contagem |
.reacted | Classe adicional para caixa de reação quando o usuário reagiu com uma reação específica |
.reaction-count | Contém a contagem de reação |
.completer | Contêiner para a mensagem completer |
.completer-entry | Contêiner para uma única entrada no completer |
.completer-entry-label | Contém o rótulo para uma entrada no completer |
.completer-entry-image | Contém a imagem para uma entrada no complique |
.embed | Contêiner para uma mensagem incorporada |
.embed-author | O autor de uma incorporação |
.embed-title | O título de uma incorporação |
.embed-description | A descrição de uma incorporação |
.embed-field-title | O título de um campo de incorporação |
.embed-field-value | O valor de um campo de incorporação |
.embed-footer | O rodapé de uma incorporação |
.member-list | Contêiner da lista de membros |
.typing-indicator | O indicador de digitação (também usado para respostas) |
Usado na implementação da lista reordenada:
| Seletor |
|---|
.drag-icon |
.drag-hover-top |
.drag-hover-bottom |
Usado em configurações de guilda pop -up:
| Seletor | Descrição |
|---|---|
.guild-settings-window | Contêiner para a lista de membros no painel de membros |
.guild-members-pane-list | |
.guild-members-pane-info | Contêiner para informações do membro |
.guild-roles-pane-list | Contêiner para a lista de funções no painel de papéis |
Usado em Pop -up de perfil:
| Seletor | Descrição |
|---|---|
.mutual-friend-item | Aplicado a todos os itens da lista de amigos em comum |
.mutual-friend-item-name | Nome em item de amigo em comum |
.mutual-friend-item-avatar | Avatar em item de amigo em comum |
.mutual-guild-item | Aplicado a todos os itens na lista de guildas mútuas |
.mutual-guild-item-name | Nome em Item Mutual Guild |
.mutual-guild-item-icon | Ícone em item de guilda mútua |
.mutual-guild-item-nick | Apelido de usuário em item de guilda mútua |
.profile-connection | Aplicado a todos os itens na lista de conexões do usuário |
.profile-connection-label | Etiqueta no item de conexão de perfil |
.profile-connection-check | Marca de seleção em itens de conexão de perfil verificados |
.profile-connections | Contêiner para conexões de perfil |
.profile-notes | Contêiner para notas na janela de perfil |
.profile-notes-label | Etiqueta que diz "nota" |
.profile-notes-text | Texto da nota real |
.profile-info-pane | Aplicado ao contêiner para a seção de informações do pop -up do perfil |
.profile-info-created | Etiqueta para a data da criação do perfil |
.user-profile-window | |
.profile-main-container | Contêiner interno para perfil |
.profile-avatar | |
.profile-username | Nome de exibição do usuário (nome de usuário para compatibilidade com versões anteriores) |
.profile-username-nondisplay | Nome de usuário real do usuário |
.profile-switcher | Botões usados para alternar a seção visualizada do perfil |
.profile-stack | Contêiner para informações de perfil que podem ser alternadas entre |
.profile-badges | Recipiente para crachás |
.profile-badge |
As configurações são configuradas (por enquanto) editando abaddon.ini . O formato é semelhante ao formato Windows INI padrão, exceto :
# é usado para iniciar comentários e opostos ;Aviso : você deve editá -los enquanto o cliente estiver fechado, mesmo que haja uma opção para recarregar enquanto estiver em execução.
Esta listagem é organizada por seção. Por exemplo, Memory_DB seria definido adicionando memory_db = true sob a linha [discord]
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
gateway | corda | Substitua URL para o Discord Gateway. Deve ser formato JSON e usar compressão do fluxo Zlib | |
api_base | corda | substituir URL base para a API de discórdia | |
memory_db | booleano | falso | Se verdadeiro, os dados da discórdia serão mantidos na memória, em oposição ao disco |
token | corda | Token de discórdia usado para fazer login, isso pode ser definido no menu | |
prefetch | booleano | falso | Se verdadeira, novas mensagens farão com que os anexos de avatar e imagem sejam baixados automaticamente |
autoconnect | booleano | falso | Autoconnet to discord |
keychain | booleano | verdadeiro | Armazene o token no chaveiro do sistema (se compilado com suporte) |
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
user_agent | corda | Define o agente do usuário a ser usado nas solicitações HTTP para a API Discord (sem incluir mídia/imagens) | |
concurrent | int | 20 | Quantas imagens podem ser recuperadas simultaneamente |
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
member_list_discriminator | booleano | verdadeiro | Mostrar discriminadores de usuários na lista de membros |
stock_emojis | booleano | verdadeiro | Permita que Abaddon substitua o Unicode emojis por imagens de emojis.bin, deve ser falso para permitir que o GTK torne o próprio emojis |
custom_emojis | booleano | verdadeiro | Baixe e use emojis de discórdia personalizada |
css | corda | caminho para o arquivo CSS principal | |
animations | booleano | verdadeiro | Use imagens animadas quando disponíveis (por exemplo, ícones do servidor, emojis, avatars). Falso significa que imagens estáticas serão usadas |
animated_guild_hover_only | booleano | verdadeiro | Apenas Ícones da Guilda Animada quando a Guilda está sendo pairada |
owner_crown | booleano | verdadeiro | Mostre uma coroa ao lado do proprietário |
unreads | booleano | verdadeiro | mostre indicadores não lidos e mencione crachás |
save_state | booleano | verdadeiro | Salve o estado da GUI (canais ativos, guias, canais expandidos) |
alt_menu | booleano | falso | Mantenha o menu escondido, a menos que seja revelado com a tecla Alt |
hide_to_tray | booleano | falso | Esconda Abaddon para a bandeja do sistema na janela Fechar |
show_deleted_indicator | booleano | verdadeiro | Mostrar [excluído] indicador ao lado de mensagens excluídas em vez de realmente excluir a mensagem |
font_scale | dobro | renderização de fontes em escala. 1 permanece inalterado | |
image_embed_clamp_width | int | 400 | Largura máxima de incorporação de imagem |
image_embed_clamp_height | int | 300 | Altura máxima das incorporações de imagem |
classic_channels | booleano | falso | Use a interface clássica de discórdia para a lista de servidores/canais |
classic_change_guild_on_open | booleano | verdadeiro | Alterar guilda exibida ao selecionar um canal (lista de canais clássicos) |
| Contexto | Tipo | Descrição |
|---|---|---|
expandercolor | corda | cor para usar para o expansor na lista de canais |
nsfwchannelcolor | corda | Cor para usar nos canais NSFW na lista de canais |
mentionbadgecolor | corda | Cor de fundo para mencionar crachás |
mentionbadgetextcolor | corda | cor a ser usada para o número exibido em crachás de menção |
unreadcolor | corda | cor para usar para o indicador não lido |
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
enabled | booleano | Verdadeiro (se não no Windows) | Ativar notificações de desktop |
playsound | booleano | verdadeiro | Ativar sons de notificação. Requer enable_notification_sounds = true em cmake |
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
vad | corda | rnnoise se ativado, portão de outra forma | Método usado para detecção de atividade de voz. Mutável na interface do usuário |
backends | corda | vazio | Mude a prioridade do back -end ao inicializar o miniaudio: wasapi;dsound;winmm;coreaudio;sndio;audio4;oss;pulseaudio;alsa;jack |
| Contexto | Tipo | Padrão | Descrição |
|---|---|---|---|
hideconsole | booleano | falso | Ocultar console na startup |
| variável | Descrição |
|---|---|
ABADDON_NO_FC | (Somente Windows) não use configuração de fonte personalizada |
ABADDON_CONFIG | Altere o caminho do arquivo de configuração para usar. em relação à CWD ou pode ser absoluto |