29 min read

長門服遷移計畫

因為 Discord 還是有政策限制,以及 Nitro 版付費才能開放更多功能上限,所以長門服的遷移計畫已經被提上日程,計畫複製所有長門服需要的 Discord 功能到我們的開源方案組合裡

Chapter 1: 開源方案探索

尋找 Discord 的開源替代品時,要找到一個能完全覆蓋 Discord 所有功能(尤其包含伺服器語音、視訊通話和遊戲整合等)且同時具備成熟 iOS App 的方案,是相當具挑戰性的。Discord 的許多功能都仰賴其龐大的專有後端系統。

不過,以下是一些值得考慮的開源解決方案,它們可以提供 Discord 的部分或大部分核心功能,並且都具備 iOS App。

1. Matrix(Synapse / Dendrite + Element)

這是目前最接近開源版 Discord 的解決方案,也是最推薦的選項。目前根據長門服權威大佬 @tobiichi3227 教授的建議,這也是第一選項。

  • 核心理念: Matrix 是一個開放的通訊協定,而非單一產品。它支援去中心化的通訊,這意味著你可以選擇加入公共伺服器,也可以自行架設伺服器來掌握所有資料。
  • Discord 替代方案:
    • 聊天室與頻道: 完全支援文字、圖片、檔案分享,並可建立多個頻道。
    • 語音與視訊: 透過 Element 等客戶端,可以進行一對一或群組語音與視訊通話。
    • 伺服器功能: 稱作「空間(Spaces)」,可以組織多個房間和頻道,管理成員權限。
    • 社群整合: 透過橋接器(Bridges),可以將 Matrix 房間與 Discord、Telegram、Slack 等平台連接起來,讓不同平台的人在同一個聊天室交流。
  • iOS App: 有官方的 Element iOS App,功能相當完整。
  • 優勢: 真正去中心化、功能擴充性高、隱私性強、社群活躍。
  • 缺點: 語音和視訊的穩定性與低延遲性可能不如 Discord 的專有技術,且初學者上手需要一點學習時間。

2. Mumble

如果你主要的需求是高品質、低延遲的語音通話,Mumble 是一個非常成熟且可靠的選擇。

  • 核心理念: Mumble 專為語音通話設計,特別是遊戲語音。它以其超低延遲和高品質音訊而聞名。
  • Discord 替代方案:
    • 語音通話: 這是 Mumble 的核心強項,提供卓越的語音品質,支援位置語音、自動語音等級調整等功能。
    • 文字聊天: 支援基本的文字聊天功能,但相較於 Discord 的完整聊天室功能,就簡單許多。
  • iOS App: 有多個開源的 iOS App 可用,例如 Mumble for iOS。
  • 優勢: 專注於語音通話,穩定性高,延遲極低。
  • 缺點: 功能單一,缺少 Discord 的視訊、螢幕分享、聊天頻道管理和豐富的機器人生態等功能。

3. Jami

Jami 是一個專注於 P2P(點對點)通訊的開源軟體。

  • 核心理念: 所有的通訊都是直接在使用者之間進行,不依賴任何中心化伺服器。這提供了極高的隱私性。
  • Discord 替代方案:
    • 語音與視訊: 支援一對一和群組語音與視訊通話。
    • 文字聊天: 支援文字聊天和檔案分享。
    • 螢幕分享: 支援螢幕分享功能。
  • iOS App: 官方提供 Jami iOS App。
  • 優勢: 高度去中心化,隱私保護做得很好,沒有中間伺服器來儲存你的通訊內容。
  • 缺點: P2P 連線的穩定性有時會受到網路環境影響,群組聊天和群組通話的功能相對陽春,用戶介面和社群功能也比 Discord 簡單許多。

4. Mattermost

Mattermost 是一款開源的團隊協作與訊息傳遞平台,其設計初衷是作為 Slack 的開源替代品,並專注於企業級的安全性與自主部署能力。

相較於 Matrix,Mattermost 和 Discord 的定位更為相似,它們都是以「社群」或「團隊」為中心的即時通訊軟體。而 Matrix 是一個底層的通訊協定,其上層的客戶端(如 Element)才實現了類似 Discord 或 Mattermost 的功能。

以下是 Mattermost 與 Matrix 在功能上的主要差異:

1. 核心架構與定位

  • Mattermost: 屬於中心化架構。你可以在自己的伺服器上安裝 Mattermost,所有使用者都會連接到這個特定的伺服器。它的主要市場是企業內部溝通、DevOps 團隊協作和高度注重資安的組織。
  • Matrix: 屬於去中心化架構。它是一個開放的通訊協定,沒有單一的中心伺服器。使用者可以選擇加入任何一個 Matrix 伺服器,並且可以與其他伺服器上的使用者進行通訊(這個特性稱為「聯邦化」)。這提供了極高的自由度和隱私性。

2. 功能與生態

  • Mattermost: 功能集更偏向企業應用。
    • 核心功能: 頻道、私訊、檔案分享、搜尋、整合工具(如 GitHub、Jira、GitLab)。
    • 專屬功能: 專為 DevOps 和事件應變設計的整合功能,例如運行命令、工作流自動化、事件管理等。
    • iOS App: 有官方的 Mattermost iOS App,功能完整且穩定。
  • Matrix(透過 Element 客戶端): 功能更全面,但有些功能仰賴「橋接器(Bridges)」。
    • 核心功能: 文字聊天、語音通話、視訊通話、端對端加密(E2EE)、檔案分享、社群空間(Spaces)。
    • 專屬功能: 「聯邦化」是其最大特色,使用者可以跨伺服器通訊。同時,強大的橋接器生態讓 Matrix 能夠與 Discord、Telegram 等其他平台互通,這是 Mattermost 所不具備的。
    • iOS App: 官方的 Element iOS App 支援大多數核心功能。

3. 安全性與隱私

  • Mattermost: 強調在企業環境下的資料安全與合規性。由於是中心化架構,所有資料都儲存在你的伺服器上,你可以完全掌控。
  • Matrix: 提供了端對端加密(End-to-End Encryption),可以確保通訊內容只有發送者和接收者能夠閱讀。其去中心化的特性也意味著沒有單一實體可以控制你的通訊,提供了更高的隱私保護。

總結

特性MattermostMatrix
架構中心化去中心化、聯邦化
主要定位企業內部、DevOps、安全性開放通訊協定、社群、個人隱私
核心功能團隊聊天、檔案分享、企業整合聊天、語音/視訊通話、端對端加密、橋接器
最大優勢企業級資安、專為團隊協作設計、自主部署能力強去中心化、聯邦化、跨平台通訊、強大的隱私保護
適合對象尋找 Slack 替代品的企業、注重資料安全的公司、DevOps 團隊尋找 Discord 替代品的社群、注重隱私的個人、希望跨平台整合的用戶

簡而言之,如果你需要一個功能成熟、專為企業協作設計、且可以完全掌控資料的開源平台,Mattermost 是一個很好的選擇。綜合來看,Matrix(搭配客戶端如 Element)是目前最接近,也是最有可能實現需求的開源替代品。

以下是為什麼 Matrix 比 Mattermost 更適合作為 Discord 替代品的原因:

Matrix 的優勢(更接近 Discord)

  • 社群導向功能: Matrix 協定和其主要客戶端 Element 的設計理念,都更貼近於建立開放的社群。你可以建立類似 Discord「伺服器」的「空間(Spaces)」,並在其中管理多個「頻道(rooms)」。
  • 語音與視訊通話: Matrix 協定內建對語音和視訊通話的支援,而客戶端如 Element 也已經實現了這個功能,雖然穩定性和延遲性可能無法與 Discord 的專有技術完全匹敵,但它提供了最核心的替代功能。
  • 去中心化與互通性: Matrix 的「聯邦化(Federation)」功能是其獨有且強大的優勢。它可以讓你與其他 Matrix 伺服器上的使用者通訊,甚至透過「橋接器(Bridges)」與 Discord、Telegram、Slack 等其他平台連接,這在 Discord 上是無法實現的。
  • 隱私與安全性: 強大的端對端加密(E2EE)是 Matrix 的核心賣點之一,這提供了比 Discord 預設更高的隱私保護。

Mattermost 的限制(更像 Slack)

  • 企業協作定位: Mattermost 的核心目標是作為企業內部的團隊通訊工具,它的功能更偏向於 Slack,專注於專案管理、DevOps 工作流和企業內部整合,而不是遊戲社群和開放式社交。
  • 功能差異: 雖然 Mattermost 支援文字頻道和基本視訊通話,但其語音通話的設計和優化程度遠不如 Discord,也沒有 Discord 專為遊戲設計的語音功能(如按鍵發話)。
  • 中心化架構: Mattermost 是一個中心化平台,所有使用者都必須連接到你自行架設的單一伺服器。這缺乏 Matrix 的聯邦化特性,無法實現跨伺服器或跨平台的社群互動。

總結

特性Matrix (with Element)Mattermost
主要定位開放社群通訊企業團隊協作
語音通話支援,但穩定性可能不及 Discord支援,但非主要功能,不為遊戲優化
社群管理有「空間(Spaces)」,類似伺服器有「團隊(Teams)」,類似工作區
跨平台整合強大橋接器,可與 Discord 互通企業級整合,多為開發者工具
核心優勢去中心化、聯邦化、端對端加密企業資安、自主部署、工作流整合

因此找到一個能「替代 Discord 大多數社群功能」的開源平台,Matrix 是一個最佳的選擇。如果需求是企業級的團隊協作工具,那麼 Mattermost 會是更合適的選項。


Chapter 2: Discord 核心功能

Discord 免費版(即未訂閱 Nitro)的功能非常完整,可以滿足絕大多數使用者的需求。以下是 Discord 所有核心功能,這些都不需要付費即可使用:

1. 文字聊天與訊息功能

  • 無限制的文字頻道: 可以在伺服器內創建多個文字頻道來組織不同的討論主題。
  • 私訊和群組聊天: 支援一對一私訊和最多 10 人的群組聊天。
  • 多媒體分享: 傳送圖片、GIF、影片和檔案。不過,檔案大小上限為 25 MB
  • 表情符號與貼圖: 使用標準的 Discord 和自訂表情符號,以及伺服器專屬的貼圖。
  • 富文本格式: 支援 Markdown 格式,可使用粗體、斜體、底線、刪除線和程式碼區塊等。
  • 標記功能: 可標記其他成員(@mention),或使用 @everyone@here 來通知整個伺服器或所有線上成員。
  • 回覆與引述: 可直接回覆特定的訊息,並引述原文。

2. 語音與視訊通話

  • 無限制的語音頻道: 可以在伺服器內創建多個語音頻道。
  • 高品質語音通話: 支援低延遲語音通話,並且可以調整輸入和輸出的音量。
  • 視訊通話與螢幕分享: 支援群組內的視訊通話和螢幕分享功能。在伺服器內,視訊通話人數上限為 25 人
  • 視訊背景模糊: 可開啟或關閉視訊通話時的背景模糊效果。

3. 伺服器管理與社群功能

  • 創建伺服器: 可以免費創建自己的伺服器,並邀請朋友加入。
  • 管理角色與權限: 創建和分配不同的角色,並為每個角色設定細緻的權限(例如管理頻道、踢出成員、禁止成員發言等)。
  • 社群設定: 啟用「社群」功能,獲得更多工具,例如歡迎畫面、公告頻道和伺服器洞察分析。
  • 機器人整合: 可以邀請各種功能強大的機器人到你的伺服器,這些機器人可以提供遊戲功能、管理工具、音樂播放、自動化工作等。
  • 伺服器模板: 可以從現有的伺服器建立模板,方便快速創建新的伺服器。

4. 其他功能

  • 遊戲整合: 顯示你正在玩的遊戲狀態(Game Status)。
  • 線上狀態: 設定你的線上狀態,如「線上」、「閒置」、「請勿打擾」或「隱形」。
  • 動態: 類似個人檔案,可以寫下想分享的內容,或是設定動態消息。
  • 應用程式連結: 連結你的 Twitch、Steam、YouTube、Spotify 等帳號,讓朋友看到你的活動。

總結來說,Discord 的免費版功能已經非常強大,它提供了一個完整的平台,讓使用者能夠進行日常的溝通、遊戲語音和社群管理。Nitro 訂閱主要是提供額外的福利和升級,例如更大的檔案上傳限制、更高畫質的串流、自訂表情符號以及個人化設定等,但這些並非核心功能。


Chapter 3: Matrix 可實現核心功能

基於 Matrix 的自建系統,可以說幾乎能夠涵蓋 Discord 免費版的大部分核心功能,但在某些特定功能上,它們的實現方式或體驗會有所不同。

最大的差異在於 Discord 是封閉的專有平台,而 Matrix 是開放的通訊協定。這意味著你的 Matrix 系統可以透過自行開發或社群貢獻來不斷新增功能。

以下是針對 Discord 的核心功能,基於 Matrix 的自建系統能提供多少替代:

1. 文字聊天與訊息功能

  • 覆蓋程度:100%
  • 如何實現: Matrix 的核心就是文字聊天。它完整支援 Discord 的所有基本功能,包括:
    • 無限制的文字頻道(在 Matrix 中稱為「房間」)。
    • 一對一私訊和群組聊天。
    • 分享圖片、影片、檔案(檔案大小上限由你自己伺服器設定,沒有 Discord 的 25 MB 限制)。
    • 豐富的訊息格式、表情符號、標記 @everyone 或特定成員、回覆訊息。

2. 語音與視訊通話

  • 覆蓋程度:約 80%
  • 如何實現: Matrix 協定內建了對語音和視訊通話的支援,其客戶端如 Element 也已經實現了這些功能。你可以:
    • 創建語音頻道(語音房間)。
    • 進行一對一或群組視訊通話。
    • 分享螢幕。
  • 主要差異: Matrix 的通話技術通常基於 WebRTC,而 Discord 使用的是其專有、針對遊戲通話優化的低延遲技術。這導致在 Matrix 上,語音和視訊通話的延遲、穩定性與音質在極端情況下(例如多人同時高畫質串流)可能不如 Discord。

3. 伺服器管理與社群功能

  • 覆蓋程度:95%
  • 如何實現:
    • 伺服器與頻道: 在 Matrix 中,一個「伺服器」可以被稱為一個「空間(Space)」,而頻道則為「房間(Room)」,組織方式幾乎與 Discord 相同。
    • 角色與權限: Matrix 支援詳細的權限系統,你可以設定管理員、版主、成員等不同角色,並細緻地控制他們在不同房間的權限。
    • 機器人整合: Matrix 擁有豐富的 API,社群也開發了大量的機器人。你可以自行開發機器人或邀請現有的機器人來實現自動管理、資訊播報、遊戲互動等功能。

4. 遊戲整合與個人化功能

  • 覆蓋程度:約 70%
  • 如何實現:
    • 遊戲狀態: Discord 的遊戲狀態顯示是專有功能。在 Matrix 中,可以透過開發機器人來實現類似的功能,例如將 Steam 或其他遊戲平台的狀態資訊自動發送到你的個人頁面或頻道中。
    • 應用程式連結: 與 Spotify、Twitch 等平台的連結可以透過「橋接器(Bridges)」或機器人來實現。
    • 個人化: 由於你可以自行架設伺服器,因此不受 Nitro 訂閱的限制。你可以自由設定更高的檔案上傳上限、更豐富的自訂表情符號,甚至修改客戶端的介面樣式。

如何自己新增功能?

這是 Matrix 作為開源協定最大的優勢。你有幾種方式可以新增或修改功能:

  1. 利用 API 創建機器人: 這是最常見的方式。你可以使用 Matrix 提供的 API,利用 Python 或其他語言開發自己的機器人,來實現任何你想要的功能,例如:
    • 自動發送提醒。
    • 從外部網站抓取資訊。
    • 創建客製化的互動遊戲。
  2. 開發或使用橋接器(Bridges): 橋接器讓你的 Matrix 伺服器能夠與其他通訊平台(如 Discord、Telegram、Slack、IRC 等)的頻道互通。如果你找不到某個功能的替代品,可以考慮將其與 Discord 的服務連接起來。
  3. 貢獻或修改客戶端/伺服器軟體: 由於 Matrix 的客戶端(如 Element)和伺服器(如 Synapse)都是開源的,如果你具備開發能力,可以直接修改這些程式碼來添加新的功能,或針對特定需求進行優化。這提供了完全的自由度,但需要相對高的技術門檻。

總結來說,Matrix 在功能上已經能夠滿足你對 Discord 絕大多數核心功能的需求,尤其是在文字聊天和伺服器管理方面。而在語音通話和遊戲整合等特定功能上,雖然體驗可能有所不同,但它提供了自行客製化和擴充的無限可能性,這是任何封閉平台都無法比擬的。以下是一些相對 Discord 免費版來說,無法使用或功能細項上有差異的地方,以及如何透過自建來彌補這些差異。

無法直接使用的功能

這類功能通常是 Discord 專有的、深度整合在其服務中的。

  • 專屬的遊戲狀態顯示: Discord 能自動偵測你正在玩的遊戲,並在你的個人檔案和狀態中顯示。Matrix 本身沒有這種深度整合功能。
  • Discord 專屬機器人與應用程式: 許多為 Discord 生態系開發的機器人(例如 MEE6、Dyno、Midjourney 等)和應用程式,都無法直接在 Matrix 伺服器上運作。它們需要針對 Matrix 的 API 重新開發或透過橋接器轉接。
  • 伺服器加成(Server Boosting): 這是 Discord 的付費功能,與其商業模式掛勾,用來提升伺服器的語音品質、獲得更多表情符號欄位等。自建的 Matrix 伺服器沒有這個概念,因為所有資源都由你自己控制。

有差異的功能細項

這些功能在 Matrix 上有對應的替代方案,但在使用者體驗、效能或實現方式上有所不同。

  • 語音與視訊通話效能:
    • 差異: Discord 的語音通話以超低延遲和高穩定性聞名,特別為遊戲優化。Matrix 的通話技術(通常是 WebRTC)雖然功能齊全,但在極端情況下,多人通話或畫面分享的延遲和效能可能不如 Discord 順暢。
    • 改善方式: 你可以選擇效能更好的伺服器主機,並優化網路配置,來盡可能提升通話品質。
  • 檔案上傳大小限制:
    • 差異: Discord 免費版限制單個檔案大小為 25MB。在 Matrix 系統中,這個限制完全由你控制,你可以根據伺服器儲存空間自行設定,理論上可以上傳非常大的檔案。
  • 表情符號與貼圖:
    • 差異: Discord 伺服器的自訂表情符號,不能在其他伺服器使用(除非訂閱 Nitro)。在 Matrix 上,表情符號的管理由伺服器管理員決定,可以自由地在不同房間使用,不受跨伺服器的限制。
  • 使用者介面與操作邏輯:
    • 差異: Matrix 的主流客戶端如 Element,其介面和操作邏輯更偏向於通訊軟體而非專門的社群平台。雖然功能類似,但使用者需要一段時間適應,尤其是在「空間(Spaces)」與「房間(Rooms)」的階層管理上。

自己新增功能的方式

這正是 Matrix 的強大之處。由於整個協定都是開放的,你可以透過以下幾種方式為你的系統新增功能:

  1. 開發機器人(Bots): 這是最直接且最常見的方式。你可以使用 Matrix 提供的 API,利用 Python 等語言自行開發機器人,來實現任何你想要的功能,例如:
    • 從遊戲 API 抓取玩家數據並發布到頻道。
    • 建立客製化的管理指令,自動化管理任務。
    • 開發小遊戲或互動功能。
  2. 使用橋接器(Bridges): 如果你想使用 Discord 上的某些功能或機器人,最有效的方法是建立橋接器。橋接器會將你的 Matrix 房間與 Discord 頻道連接起來,讓兩個平台的使用者可以在同一個聊天室中對話,同時保留各自平台的特色功能。
  3. 自行開發或修改客戶端: 如果你具備軟體開發能力,你可以直接對開源的 Matrix 客戶端程式碼進行修改,為其添加你獨有的功能或調整介面,讓它更符合你的需求。這種自由度是封閉平台無法提供的。

Chapter 4: 遷移方法

在討論這個問題時,必須明確區分兩個概念:資料遷移功能複製

理論上可以做到「幾乎」分毫不差的資料遷移,但要做到「完全相同的功能」,則是不可能實現的。

A. 資料遷移 (Migration)

  • 可行性: 高度可行,但需要大量的開發工作。
  • 實現方式: 你需要開發一個工具,能夠從 Discord 的 API 或其他管道爬取(Scrape)所有伺服器數據,並將其轉換(Transform)成 Matrix 的格式。
    • 使用者資料: 帳號、頭像、使用者名稱、甚至是好友列表。
    • 訊息歷史: 頻道中的所有訊息、圖片和檔案,並保留時間戳記、作者和回覆關係。
    • 伺服器結構: 頻道分類、頻道列表、權限設定、角色等。

這個過程的最大挑戰在於 Discord 不提供官方的資料匯出工具,且其 API 使用條款通常不允許大規模爬取資料。因此,這是一個逆向工程的過程,你需要自己處理數據格式、權限對應等複雜問題,並承擔可能違反 Discord 使用條款的風險。

B. 功能複製 (Feature Replication)

  • 可行性: 不可能
  • 主要原因: 即使你將所有資料都成功遷移到 Matrix 上,你仍然無法在 Matrix 系統中複製所有 Discord 的功能。這主要有兩個原因:
    1. 核心技術架構不同:
      • Discord:語音、視訊通話和遊戲整合功能是建立在其專有、高度優化的伺服器架構上的。這包含了低延遲的語音編解碼器、全球內容傳遞網路(CDN)以及為遊戲通訊設計的特定協定。這些都是不開源的。
      • Matrix:基於開放的 WebRTC 技術,並透過聯邦化的伺服器進行通訊。雖然功能類似,但底層技術完全不同。你無法在 Matrix 上直接複製 Discord 的通話效能。
    2. 生態系與服務綁定:
      • Discord 的許多功能都與其核心服務深度綁定。例如:
        • 遊戲狀態(Game Status): 這是 Discord 客戶端與其專有後端服務之間的整合,用於自動偵測和顯示使用者正在玩的遊戲。
        • Discord 專屬機器人: 像 Midjourney 或其他知名的機器人,其後端服務只與 Discord 的 API 進行互動。你無法將它們「搬到」Matrix 上。

結論

雖然具備專業的開發能力能讓你將 Discord 的靜態資料(帳號、訊息、伺服器結構)幾乎完整地遷移到 Matrix 上,但你無法複製 Discord 的動態功能(低延遲通話、遊戲整合、專屬機器人等)


格式科普

Matrix 伺服器主要使用 JSON(JavaScript Object Notation) 作為其資料交換格式。

這意味著從客戶端(例如 Element)傳送到伺服器,以及伺服器之間進行聯邦化通訊時,所有資料都是以 JSON 物件的形式傳輸。

您的問題中提到的其他格式,其實是作為 JSON 格式中的一部分來使用的:

1. JSON

這是 Matrix 的核心格式。每一個動作,無論是傳送訊息、加入房間、更新使用者狀態或設定權限,都會被包裝成一個 JSON 物件,這個物件在 Matrix 中被稱為一個**「事件 (Event)」**。

  • 範例: 一則文字訊息事件的 JSON 結構會長這樣:

{ "event_id": "$143273582443r333:matrix.org", "type": "m.room.message", "sender": "@bob:matrix.org", "content": { "body": "您好!", "msgtype": "m.text" }, "origin_server_ts": 1432735824653 }

2. TXT (純文字)

純文字訊息是 JSON 物件內部的一個值。在上面的範例中,"body": "您好!" 就是純文字內容。所以,純文字本身並非 Matrix 伺服器的資料格式,而是 JSON 事件中的一個欄位。

3. HTML (格式化內容)

Matrix 支援更豐富的訊息格式,例如粗體、斜體、連結等。當你傳送帶有格式的訊息時,該事件的 JSON 物件中會額外包含一個 formatted_body 的欄位,其值就是用 HTML 格式呈現的內容。

  • 範例: 傳送一則帶有粗體字的訊息,JSON 結構會包含兩個部分:
    {
    "type": "m.room.message",
    "content": {
    "msgtype": "m.text",
    "body": "您好!",
    "format": "org.matrix.custom_html",
    "formatted_body": "您好!"
    }
    }

在這裡,body 欄位是純文字或 Markdown 格式,而 formatted_body 則是對應的 HTML 格式。

總結來說,Matrix 伺服器的核心資料格式是 JSON。而純文字和 HTML 等格式,都是作為 JSON 事件的內容來承載訊息資料的。

除了先前討論的五個主要功能(帳號、遊戲整合、機器人、語音效能和私訊歷史)之外,進行遷移還可能導致一些功能上的細微減損或改變。這些變動並非完全消失,而是會以不同的方式呈現,需要你額外投入開發來彌補。

1. 伺服器洞察分析 (Server Insights)

  • 影響: Discord 提供內建的伺服器洞察工具,可以讓你看到成員成長、活躍度、留存率等數據。在 Matrix 上,你將失去這些自動生成的分析圖表。
  • 補救方式: 你需要自行開發一個分析工具,從 Matrix 伺服器的日誌或資料庫中提取數據,並透過視覺化工具來呈現。這需要額外的數據處理和開發工作。

2. 伺服器成員身分證 (Server Profiles)

  • 影響: Discord 允許使用者在不同伺服器擁有不同的個人檔案(頭像和暱稱)。這個功能在 Matrix 上沒有內建的對應物。
  • 補救方式: 你可以開發一個 Matrix 機器人來模擬這個功能,讓使用者在特定房間設定一個專屬的暱稱。不過,這無法像 Discord 那樣深度整合到使用者介面中。

3. 跨伺服器自訂表情符號

  • 影響: Discord 的 Nitro 訂閱戶可以在任何伺服器使用他們擁有的自訂表情符號。這是一個付費功能,但其概念是跨伺服器使用的。
  • 補救方式: 在你自建的 Matrix 伺服器上,所有表情符號都屬於你的伺服器。雖然你可以讓所有成員無限制地使用這些表情符號,但他們無法將你在伺服器上建立的表情符號,帶到別人的 Matrix 伺服器上使用。
  • 影響: Discord 的連結預覽功能通常非常強大,能夠為 YouTube 影片、Spotify 歌曲或 Twitter 貼文等生成美觀的預覽卡片。
  • 補救方式: Matrix 客戶端通常也支援連結預覽,但其支援的服務範圍和預覽樣式可能不如 Discord 豐富。你可以開發一個機器人,專門用於處理和美化特定服務的連結預覽。

5. 第三方應用程式與整合

  • 影響: 許多 Discord 遊戲或服務的開發者,會直接將他們的應用程式與 Discord 整合,例如直接在 Discord 上啟動遊戲、顯示成就或進行交易。
  • 補救方式: 這些是專為 Discord API 設計的功能,你無法遷移。這意味著你將失去這些深度整合的服務。

總結來說,除了先前提到的主要功能之外,遷移到 Matrix 還可能需要你在分析、個人化和第三方服務整合方面,投入額外的開發資源來重建或模擬類似的功能。儘管可以透過專業能力彌補,但這些細微的差異將會是「無損」遷移的最大挑戰。


Chapter 5: 模組化 Discord 替代方案

模組化統合和測試方案

1. 核心 Stack (Core Platform)

這個目錄應該使用 Git Submodule 來管理基礎的 Matrix 服務,以確保你隨時都能取得最新且穩定的官方版本。

目錄/檔案作用
/core-stack包含所有基礎伺服器與客戶端程式碼。
/core-stack/synapseMatrix 伺服器(Synapse 或 Dendrite)原始碼的 Git Submodule
/core-stack/element推薦的客戶端(Element Web/Desktop)原始碼的 Git Submodule
/core-stack/widgets放置所有客製化的 Web 應用程式小工具(例如社群看板、分析儀表板)。

2. 資料遷移工具 (Migration Tools)

這是一個高度客製化的目錄,專門用來處理 Discord 的專有資料,並將其轉換為 Matrix 的 JSON 事件格式。

目錄/檔案作用
/migration-tools包含所有資料處理腳本。
discord_scraper.py用於從 Discord API 爬取訊息、用戶和角色資訊的腳本(請注意 ToS 風險)。
data_transformer.py核心轉換腳本,將爬取的 Discord 數據轉換為 Matrix 的 m.room.message 等 JSON 事件格式。
importer.sh用於將轉換後的 JSON 數據匯入 Matrix 伺服器的執行腳本。

3. 功能重建與擴充模組 (Feature Replication & Extensions)

這是你利用開發能力來補齊 Discord 功能差異的核心所在。每個機器人或橋接器都可以作為一個獨立的 Submodule獨立目錄

目錄/檔案作用覆蓋 Discord 功能
/feature-bots專為 Matrix API 設計的客製化機器人程式碼。
/feature-bots/status-bot模擬 Discord 遊戲狀態顯示、Spotify 等整合。遊戲狀態、App 整合
/feature-bots/admin-bot複雜的角色管理、自動審核、伺服器洞察數據收集。伺服器洞察、機器人管理
/bridges用於連接外部服務。
/bridges/discord-bridge連接真實 Discord 伺服器(用於與外部社群互動)。外部連結、社群互通

4. 文件與指南 (Documentation)

目錄/檔案作用
/docs詳細的操作指南。
Feature_Matrix.md最重要文件: 詳細列出每個 Discord 功能對應 Matrix 的實現方式、覆蓋程度和所需的模組。
Deployment_Guide.md如何使用 docker-compose.yml 部署整個 Stack 的步驟。
Bot_Development.md如何新增和開發自己的 Matrix 機器人的指南。

5. 說明

  1. Feature_Matrix.md 開始: 先明確列出所有 Discord 免費版功能,然後標註 Matrix 上的對應狀態([已覆蓋], [需開發], [不可能])。
  2. 模組化開發: 每個需要開發的功能都應該是一個獨立的模組或機器人,放在 /feature-bots 目錄下,方便日後維護與升級。