GTKを使用してC ++で作成された代替Discordクライアント
![]() | ![]() |
![]() | ![]() |
現在の機能:
1 -Abaddonは、それが正当なWebクライアントだとDiscordに思わせるために、そのベスト(完璧ではありませんが)を試みます。これを行うために行われたことのいくつかには、ブラウザユーザーエージェントの使用、公式Webクライアントが行う同じ識別メッセージを送信し、すべての場合にAPI V9エンドポイントを使用し、エンドポイントを使用しないメッセージを送信し、Webクライアントは通常使用しません。ただし、まだいくつかの小さな矛盾があります。たとえば、Webクライアントは、 /scienceエンドポイント(Ublock Originがこれを停止する)を介して、およびすべてのリクエストのヘッダーを介して多くのテレメトリを送信します。
スパムフィルターに巻き込まれることを心配している場合は、避けたいことについてはこちらをご覧ください。
2 -Unicode emojisは、Windows以外のプラットフォームでGTKによってレンダリングされるのではなく、手動で置換されます。これは、このREADMEの下部に示すように、 stock_emojis設定で変更できます。 Twemojiを使用したCBDTベースのフォントが提供され、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の古いバージョンでは、GTKMM3.0-DevelではなくGTKMM30-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を使用する場合は、
binDirectoryから開始してください
resフォルダー内の2つのフォルダー( 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の追加クラス |
.channel-list | チャネルリストのコンテナ |
.messages | ユーザーメッセージのコンテナ |
.message-container | ユーザーのメッセージを保持するコンテナ |
.message-container-author | メッセージコンテナの著者ラベル |
.message-container-timestamp | メッセージコンテナ用のタイムスタンプラベル |
.message-container-avatar | メッセージ内のユーザー用のアバター |
.message-container-extra | ボット/webhookを含むラベル |
.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 | 完了者の1つのエントリ用のコンテナ |
.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 | ユーザーConnectionsリスト内のすべてのアイテムに適用されます |
.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を編集して構成されています。形式は、以下を除く標準のWindows INI形式に似ています。
# 、対照的にコメントを開始するために使用されます;警告:実行中にリロードするオプションがある場合でも、クライアントが閉じている間にこれらを編集する必要があります。
このリストはセクションごとに整理されています。たとえば、memory_dbはmemory_db = trueの下に[discord]を追加することで設定されます。
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
gateway | 弦 | Discord GatewayのURLをオーバーライドします。 JSON形式であり、Zlibストリーム圧縮を使用する必要があります | |
api_base | 弦 | Discord APIのベースURLをオーバーライドします | |
memory_db | ブール | 間違い | 真実の場合、ディスクとは対照的に不一致データはメモリに保持されます |
token | 弦 | ログインに使用される不一致トークン、これはメニューから設定できます | |
prefetch | ブール | 間違い | 本当の場合、新しいメッセージはアバターと画像の添付ファイルを自動的にダウンロードします |
autoconnect | ブール | 間違い | 不一致に自動接続します |
keychain | ブール | 真実 | システムキーチェーンにトークンを保存します(サポートが編集されている場合) |
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
user_agent | 弦 | HTTPリクエストで使用するユーザーエージェントをDiscord APIに設定します(メディア/画像は含まれません) | |
concurrent | int | 20 | 同時に取得できる画像の数 |
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
member_list_discriminator | ブール | 真実 | メンバーリストにユーザー差別を表示します |
stock_emojis | ブール | 真実 | AbaddonがUnicode emojisをemojis.binの画像に置き換えることを許可します。 |
custom_emojis | ブール | 真実 | カスタムディスコード絵文字をダウンロードして使用します |
css | 弦 | メインCSSファイルへのパス | |
animations | ブール | 真実 | 利用可能な場合はアニメーション画像(サーバーアイコン、絵文字、アバターなど)を使用します。 falseは、静的画像が使用されることを意味します |
animated_guild_hover_only | ブール | 真実 | ギルドがホバリングされているときのアニメーションギルドアイコンのみ |
owner_crown | ブール | 真実 | 所有者の隣に王冠を見せます |
unreads | ブール | 真実 | 未読のインジケーターを表示し、バッジに言及してください |
save_state | ブール | 真実 | GUIの状態を保存します(アクティブチャネル、タブ、拡張チャネル) |
alt_menu | ブール | 間違い | Altキーで明らかにされない限り、メニューを隠しておきます |
hide_to_tray | ブール | 間違い | アバドンをウィンドウの閉じてシステムトレイに隠します |
show_deleted_indicator | ブール | 真実 | 実際にメッセージを削除するのではなく、削除されたメッセージの横にある[削除]インジケーターを表示 |
font_scale | ダブル | スケールフォントレンダリング。 1は変更されていません | |
image_embed_clamp_width | int | 400 | 画像埋め込みの最大幅 |
image_embed_clamp_height | int | 300 | 画像埋め込みの最大高さ |
classic_channels | ブール | 間違い | サーバー/チャンネルリストには、クラシックなDiscordスタイルのインターフェイスを使用します |
classic_change_guild_on_open | ブール | 真実 | チャンネルを選択するときに表示されたギルドの変更(クラシックチャンネルリスト) |
| 設定 | タイプ | 説明 |
|---|---|---|
expandercolor | 弦 | チャンネルリストのエキスパンダーに使用する色 |
nsfwchannelcolor | 弦 | チャンネルリストのNSFWチャネルに使用する色 |
mentionbadgecolor | 弦 | 言及バッジの背景色 |
mentionbadgetextcolor | 弦 | 言及バッジに表示される番号に使用する色 |
unreadcolor | 弦 | 未読インジケーターに使用する色 |
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
enabled | ブール | True(Windowsではない場合) | デスクトップ通知を有効にします |
playsound | ブール | 真実 | 通知音を有効にします。 cmakeでenable_notification_sounds = trueが必要です |
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
vad | 弦 | rnnoise有効にした場合、それ以外の場合はゲート | 音声アクティビティ検出に使用される方法。 UIで変更可能 |
backends | 弦 | 空の | Miniaudioを初期化するときにバックエンドの優先度を変更: wasapi;dsound;winmm;coreaudio;sndio;audio4;oss;pulseaudio;alsa;jack |
| 設定 | タイプ | デフォルト | 説明 |
|---|---|---|---|
hideconsole | ブール | 間違い | 起動時にコンソールを非表示にします |
| 変数 | 説明 |
|---|---|
ABADDON_NO_FC | (Windowsのみ)カスタムフォント構成を使用しないでください |
ABADDON_CONFIG | 使用する構成ファイルのパスを変更します。 CWDと比較して、または絶対にすることができます |