ไคลเอนต์ Discord ทางเลือกที่ทำใน C ++ ด้วย GTK
![]() | ![]() |
![]() | ![]() |
คุณสมบัติปัจจุบัน:
1 - Abaddon พยายามที่ดีที่สุด (แม้ว่าจะไม่สมบูรณ์แบบ) ที่จะทำให้ Discord คิดว่ามันเป็นเว็บไคลเอนต์ที่ถูกกฎหมาย บางสิ่งที่ทำในการทำเช่นนี้รวมถึง: การใช้ตัวแทนผู้ใช้เบราว์เซอร์ส่งข้อความระบุตัวตนเดียวกันกับที่เว็บไคลเอ็นต์อย่างเป็นทางการโดยใช้จุดสิ้นสุด API V9 ในทุกกรณีและไม่ใช้จุดสิ้นสุดที่เว็บไคลเอ็นต์ไม่ได้ใช้ตามปกติ อย่างไรก็ตามยังมีความไม่สอดคล้องกันเล็กน้อย ตัวอย่างเช่นเว็บไคลเอนต์ส่ง telemetry จำนวนมากผ่านจุดสิ้นสุด /science (แหล่งกำเนิด ublock หยุดสิ่งนี้) รวมถึงส่วนหัวของคำขอทั้งหมด
ดูที่นี่ สำหรับสิ่งที่คุณอาจต้องการหลีกเลี่ยงหากคุณกังวลเกี่ยวกับการถูกจับในตัวกรองสแปม
2 - อิโมจิ Unicode ถูกแทนที่ด้วยตนเองเมื่อเทียบกับการแสดงผลโดย GTK บนแพลตฟอร์มที่ไม่ใช่ windows สิ่งนี้สามารถเปลี่ยนแปลงได้ด้วยการตั้งค่า stock_emojis ดังที่แสดงไว้ที่ด้านล่างของ readme นี้ แบบอักษรที่ใช้ CBDT โดยใช้ Twemoji มีไว้เพื่อให้ GTK สามารถแสดง Emojis บน 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 รุ่นเก่าคุณอาจต้องติดตั้ง GTKMM30-DEVEL แทน GTKMM3.0-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 ตรวจสอบให้แน่ใจว่าเริ่มต้นจากไดเรกทอรี
bin
โฟลเดอร์สองโฟลเดอร์ภายในโฟลเดอร์ res ( 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 S เมื่อหน้าต่างไม่ใช่หน้าต่างหลัก |
.channel-list | คอนเทนเนอร์ของรายการช่อง |
.messages | คอนเทนเนอร์ของข้อความผู้ใช้ |
.message-container | คอนเทนเนอร์ที่เก็บข้อความของผู้ใช้ |
.message-container-author | ฉลากผู้เขียนสำหรับคอนเทนเนอร์ข้อความ |
.message-container-timestamp | ฉลาก Timestamp สำหรับคอนเทนเนอร์ข้อความ |
.message-container-avatar | อวตารสำหรับผู้ใช้ในข้อความ |
.message-container-extra | ฉลากที่มีบอท/webhook |
.message-text | ข้อความของข้อความผู้ใช้ |
.pending | คลาสเพิ่มเติมของข้อความ. message สำหรับข้อความที่รอการส่ง |
.failed | คลาสเพิ่มเติมของข้อความ. message สำหรับข้อความที่ไม่สามารถส่งได้ |
.message-attachment-box | มีข้อมูลแนบ |
.message-reply | คอนเทนเนอร์สำหรับข้อความตอบกลับในการตอบกลับ (องค์ประกอบเหล่านี้จะมีชุดข้อความ. message) |
.message-input | นำไปใช้กับคอนเทนเนอร์อินพุตแชท |
.replying | คลาสเพิ่มเติมสำหรับคอนเทนเนอร์อินพุตแชทเมื่อมีการสร้างการตอบกลับ |
.reaction-box | มีภาพปฏิกิริยาและจำนวน |
.reacted | คลาสเพิ่มเติมสำหรับกล่องปฏิกิริยาเมื่อผู้ใช้มีปฏิกิริยาตอบสนองต่อปฏิกิริยาเฉพาะ |
.reaction-count | มีจำนวนปฏิกิริยา |
.completer | คอนเทนเนอร์สำหรับผู้สร้างข้อความ |
.completer-entry | คอนเทนเนอร์สำหรับรายการเดียวใน completer |
.completer-entry-label | มีฉลากสำหรับรายการใน completer |
.completer-entry-image | มีภาพสำหรับรายการใน coxterer |
.embed | คอนเทนเนอร์สำหรับการฝังข้อความ |
.embed-author | ผู้เขียน AN EMBED |
.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 | นำไปใช้กับทุกรายการในรายการ Guilds Mutual |
.mutual-guild-item-name | ชื่อในรายการสมาคมรวม |
.mutual-guild-item-icon | ไอคอนในรายการสมาคมรวม |
.mutual-guild-item-nick | ชื่อเล่นของผู้ใช้ในรายการ Guild Mutual |
.profile-connection | นำไปใช้กับทุกรายการในรายการการเชื่อมต่อผู้ใช้ |
.profile-connection-label | ฉลากในรายการการเชื่อมต่อโปรไฟล์ |
.profile-connection-check | Checkmark ในรายการการเชื่อมต่อโปรไฟล์ที่ผ่านการตรวจสอบ |
.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 | สาย | แทนที่ URL สำหรับ Discord Gateway ต้องเป็นรูปแบบ JSON และใช้การบีบอัดสตรีม ZLIB | |
api_base | สาย | แทนที่ URL ฐานสำหรับ Discord API | |
memory_db | บูลีน | เท็จ | หากเป็นจริงข้อมูล discord จะถูกเก็บไว้ในหน่วยความจำเมื่อเทียบกับในดิสก์ |
token | สาย | โทเค็น Discord ที่ใช้ในการเข้าสู่ระบบสามารถตั้งค่าได้จากเมนู | |
prefetch | บูลีน | เท็จ | หากเป็นจริงข้อความใหม่จะทำให้ Avatar และ Image Attachments ถูกดาวน์โหลดโดยอัตโนมัติ |
autoconnect | บูลีน | เท็จ | autoconnect to discord |
keychain | บูลีน | จริง | เก็บโทเค็นในระบบพวงกุญแจ (ถ้ารวบรวมด้วยการสนับสนุน) |
| การตั้งค่า | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
user_agent | สาย | ตั้งค่าตัวแทนผู้ใช้ให้ใช้ในคำขอ HTTP ไปยัง Discord API (ไม่รวมสื่อ/รูปภาพ) | |
concurrent | int | 20 | สามารถดึงภาพได้กี่ภาพพร้อมกัน |
| การตั้งค่า | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
member_list_discriminator | บูลีน | จริง | แสดง discriminators ผู้ใช้ในรายการสมาชิก |
stock_emojis | บูลีน | จริง | อนุญาตให้ Abaddon ทดแทน unicode emojis ด้วยรูปภาพจาก emojis.bin ต้องเป็นเท็จเพื่อให้ GTK แสดงอิโมจิเอง |
custom_emojis | บูลีน | จริง | ดาวน์โหลดและใช้ Emojis ที่กำหนดเอง |
css | สาย | พา ธ ไปยังไฟล์ CSS หลัก | |
animations | บูลีน | จริง | ใช้ภาพเคลื่อนไหวที่มีอยู่ (เช่นไอคอนเซิร์ฟเวอร์, อิโมจิ, อวตาร) จะใช้ภาพคงที่เท็จ |
animated_guild_hover_only | บูลีน | จริง | มีเพียงไอคอนกิลด์ที่เคลื่อนไหวเมื่อกิลด์ถูกลอยอยู่เหนือ |
owner_crown | บูลีน | จริง | แสดงมงกุฎถัดจากเจ้าของ |
unreads | บูลีน | จริง | แสดงตัวบ่งชี้ที่ยังไม่ได้อ่านและกล่าวถึงป้าย |
save_state | บูลีน | จริง | บันทึกสถานะของ GUI (ช่องที่ใช้งานอยู่แท็บช่องทางขยาย) |
alt_menu | บูลีน | เท็จ | เก็บเมนูที่ซ่อนอยู่เว้นแต่จะเปิดเผยด้วยคีย์ alt |
hide_to_tray | บูลีน | เท็จ | ซ่อน abaddon ไปที่ถาดระบบบนหน้าต่างปิด |
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 | บูลีน | จริง (ถ้าไม่อยู่ใน windows) | เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป |
playsound | บูลีน | จริง | เปิดใช้งานเสียงการแจ้งเตือน ต้องการ enable_notification_sounds = true ใน cmake |
| การตั้งค่า | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
vad | สาย | rnnoise ถ้าเปิดใช้งาน gate เป็นอย่างอื่น | วิธีที่ใช้สำหรับการตรวจจับกิจกรรมเสียง เปลี่ยนแปลงได้ใน UI |
backends | สาย | ว่างเปล่า | เปลี่ยนลำดับความสำคัญแบ็กเอนด์เมื่อเริ่มต้น Miniaudio: wasapi;dsound;winmm;coreaudio;sndio;audio4;oss;pulseaudio;alsa;jack |
| การตั้งค่า | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
hideconsole | บูลีน | เท็จ | ซ่อนคอนโซลเมื่อเริ่มต้น |
| ตัวแปร | คำอธิบาย |
|---|---|
ABADDON_NO_FC | (Windows เท่านั้น) อย่าใช้การกำหนดค่าแบบอักษรที่กำหนดเอง |
ABADDON_CONFIG | เปลี่ยนเส้นทางของไฟล์การกำหนดค่าที่จะใช้ สัมพันธ์กับ CWD หรือสามารถสัมบูรณ์ได้ |