目錄
描述
警告
特徵
限制
用法
MISC功能信息
隨機提示和技巧
鏈接
有關第三方客戶阻止的更多信息
API和實施註釋
RDIRCD是一個守護程序,允許通過IRC客戶端使用個人Discord帳戶。
它將“ Discord Server”上的所有私人聊天和公共頻道/線程轉換為ITC服務器上的頻道,並且可以連接到使用常規IRC客戶端,而不是瀏覽器或電子應用程序。
“可靠”之所以出名,是因為最初的目標之一是確認消息傳遞並在這方面通知任何問題,這在當時其他類似客戶缺乏。
有一個IRC頻道可以談論這件事 - 在Libera.Chat上加入#RDIRCD。
irc url:ircs://irc.libera.chat/rdircd(github拒絕製作ircs:// links)
另請參見下面的鏈接部分,以獲取其他替代客戶列表很少的列表。
存儲庫網址:
最後一個有todo列表的git notes,以及默認參考。
雖然我不會將此應用稱為“機器人”或“自動化標準用戶帳戶” - 但此處的目的不是發布任何自動化消息或刮擦任何內容,但可以肯定,不肯定的是,不符合的不符合的員工認為所有第三方客戶都是“機器人”,並要求他們使用特殊的二級API使用,請參閱每個帳戶中的每個帳戶,以便在API中有效的範圍/批准的是,在此範圍內,請參見AMP/AMP的範圍,以使其與此相關聯),以使其分別批准,並且可以單獨使用,以便逐步進行訪問,以使其分別批准,並且要逐步批准,並且要批准符合符合的訪問者,並且需要使用該帳戶的範圍。對於隨機的非Admin用戶而言,無法使用。
該應用程序不會以“ bot”形式顯示,也不使用特定於機器人的端點,因此如果發現它,則可以在帳戶終止中使用它。
另請參閱下面有關第三方客戶阻止部分的更多信息。
您已經被警告了! :)
可靠發出的消息訂購和交付,並明確通知任何類型的問題。
支持私人和公共渠道,頻道訂購,線程,論壇,除了創建其中任何新的渠道。
每服務器和全局捕獲通道跟踪一般活動。
可配置的本地名稱別名/重命名,輸出消息塊/替換,對接收到的消息進行regexP濾波。
通過#rdircd.control頻道支持有限的運行時重新配置。
與IRC公會/渠道/用戶名轉換的簡單且一致的不一致。
重新連接,頻道或服務器改組等之後,這些都不會改變 - 翻譯主要是確定性的,並且不依賴其他名稱。
在傳入的味精,其他事件,一些嵌入式鏈接的基本註釋中,不及格的翻譯提及,答复,附件,貼紙和表情符號。
在發送的消息,編輯和刪除中,對Discord用戶提及和表情符號翻譯的支持有限。
易於訪問的積壓通過/topic(/t)命令在任何頻道中,例如“/t log 2H”,以顯示為積壓的最後2個小時或“/t log 2019-01-08”以從該點到現在,以轉儲積壓,如果需要,請在多個批次中獲取。
通過其他方式發送的消息(例如瀏覽器)也將傳達給IRC,但如果IRC名稱與Discord discord to diff nick buts uncord to-cir nick translation,則可能來自差異。
到處都有完整的Unicode支持/使用。
IRC協議是從IRCV3文檔實現的,但不使用任何非RFC的內容,因此應與任何舊客戶端兼容。可選的TLS包裝。
廣泛的協議和調試記錄選項,有些可以通過#rdircd.debug頻道在運行時訪問。
僅需要AIOHTTP模塊的單個Python3腳本,即在任何地方運行或部署的瑣碎。
在AMD64上的相對穩定〜40m內存足跡中運行,這可能不僅僅是bitlbee-discord,但比那些漏水的瀏覽器選項卡更好。
沒有重建,GDB,Rust等,易於調整和調試。
從IRC發送的用戶提到和表情符號只能轉化為DISCORD標籤(如果啟用並使用一些怪癖,請參見下文),而不是通道,角色,貼紙,組件等。
不支持發送任何形式的附件或嵌入 - 為此使用webUI,而不是IRC。
不過,Discord會自動註釋鏈接,因此發布媒體就像那樣簡單。
除了所有類型的閱讀和將消息發送到現有頻道外,都沒有特定於不和諧的操作 - 即沒有在不和諧,管理角色,邀請,禁令,超時等上創建帳戶或渠道 - 使用webUI,和諧,和諧或適當的不和諧機器人。
不支持創建新的私人聊天和頻道/論壇線程。
對於私人聊天,支持甚至可能是危險的 - 有關詳細信息,請參閱下面的第三方客戶阻止部分的更多信息。
根本不會跟踪用戶存在(在線,離線,AFK,玩遊戲等)。
不會以非常簡單的方式發射用戶加入 /零件事件並處理IRC /名稱,只列出自應用程序啟動以來使用該頻道的划痕,並且在IRC-Names-timeout(默認情況下為1天)。
一般而言,完全忽略了所有非文本聊天的東西(例如語音,用戶配置文件,遊戲庫,商店,朋友列表等)。
Discord跟踪“ Read_State”服務器端,此處不以任何方式使用 - 觸發歷史記錄重播僅是手動完成的(/chans中的/t命令),因此有時很容易錯過安靜的重新連接。
不支持Discord Multifactor身份驗證模式,但是手動token auth可能會奏效 - 請參見下面的CAPTCHAS上的註釋。
Slash命令(用於機器人)不以任何特殊的方式支持,但是如果IRC客戶端將通過這些命令,您可能仍然可以發送它們。
不是最友好的東西,儘管可能與IRC本身相同。
我僅在Linux上運行它,因此不太可能在OSX/Windows上“工作”,但是IDK不太可能。
自定義的臨時實現不和諧和IRC,並不能從PYPI以及此類WRT兼容性,錯誤和角落案例的任何風險和測試中受益。
似乎違反了使用它的不和諧指南 - 有關更多詳細信息,請參見上面的警告部分。
在OpenBSD平台上,使用SCRYPT編碼的IRC password-hash=時,也可能需要單獨安裝SCRYPT模塊(通過EG pkg_add py3-scrypt ),因為Python端口似乎並沒有Hashlib.scrypt在其stdlib中。
最簡單的方法可能是如果可用,則將軟件包用於/從Linux發行版中使用。
目前已知的發行版包(截至2020-05-17):
還有一個dockerfile和docker-compose.yml用於在Docker/Podman或其他與OCI兼容的容器環境中運行。
(另請參見readme.docker-permissions.md Doc有關這些常見訪問問題的信息)
如下本節的其餘部分所述,也應該輕鬆安裝一個腳本及其少數依賴項。
在Debian/Ubuntu上,可以使用此命令來完成安裝依賴項:
# apt install --no-install-recommends python3-minimal python3-aiohttp
其他Linux發行版也可能具有類似的軟件包,我建議嘗試將其用作第一個選擇,以便它們獲得更新並避免額外的本地維護負擔,並且僅通過“ PIP”即可通過“ PIP”安裝模塊後退出。
在使用Python(Python3)安裝的任何任意發行版上,使用PIP/VENV安裝AIOHTTP模塊(及其deps),以無私密的“ RDIRCD”用戶的家用DIR可能起作用(在下一個示例中也可以在下一個示例中運行rdircd),但是如果您已經通過OS封裝管理器安裝了它,則可以忽略此操作。
root # useradd -m rdircd
root # su - rdircd
## Option 1: use venv to install dependencies into "_venv" dir
rdircd % python3 -m venv _venv
rdircd % ./_venv/bin/pip install aiohttp
## Option 2: install pip (if missing) and use it directly
rdircd % python3 -m ensurepip --user
rdircd % python3 -m pip install --user aiohttp
如果您使用/使用PIPX(例如,來自DiStro Repos),則可以用來運行像這樣的Python應用程序,並且可以使用自動維護依賴項 - 僅“ Pipx Run”主腳本: pipx run rdircd --help help-無需觸摸VENV或PIP(根本不需要PIPX(PIPX就可以在引擎蓋下做))。
安裝上述要求後,可以從此存儲庫中獲取腳本本身並這樣運行:
## Ignore "useradd" if you've already created a user when running "pip" above
root # useradd -m rdircd
root # su - rdircd
## If using "venv" install example above - load its env vars
# Or alternatively run script via "./_venv/bin/python rdircd ..." command line
rdircd % source ./_venv/bin/activate
rdircd % curl -OL 'https://raw.githubusercontent.com/mk-fg/reliable-discord-client-irc-daemon/master/rdircd{,.unicode-emojis.txt.gz}'
rdircd % chmod +x rdircd
## Use "pipx run rdircd ..." here and below, if using pipx instead of pip/venv/distro-pkgs
rdircd % ./rdircd --help
...to test if it runs...
rdircd % ./rdircd --conf-dump-defaults
...for a full list of all supported options with some comments...
...alternatively, to create rdircd.ini template: ./rdircd -c rdircd.ini --conf-init
rdircd % nano rdircd.ini
...see below for configuration file info/example...
rdircd % ./rdircd --debug -c rdircd.ini
...drop --debug and use init system for a regular daemon...
為了設置守護程序/腳本以在OS啟動上運行,RDIRCD.Service Systemd單元文件可以在大多數Linux環境(編輯execstart = expart = options and path)中使用,或者可能通過init.d script.d腳本,也許是在“屏幕”會話中作為最後一個度假勝地的臨時選項。確保它以EG“ rdircd”用戶的形式運行,而不是root。
稍後更新腳本,如果需要,請用最新版本替換它,例如,通過上面的捲曲命令重新下載,在倉庫克隆上的git-pull, docker-compose up --build ,build,更新OS軟件包或其他方式,通常與它的安裝方式有關。
在〜/.rdircd.ini中使用Discord和IRCD Auth憑據創建配置文件(請參閱所有--conf... opts wrt this):
[irc]
password = hunter2
[auth]
email = [email protected]
password = discord-password注意:可以省略IRC密碼,但請確保從系統中的所有內容(或者可能都這樣做)從系統中的所有內容進行防火牆。
但是,如果設置密碼,則可能不使用IRC password=上述選項,然後使用password-hash= and -H/--conf-pw-scrypt將其生成它。無論哪種方式,在配置IRC客戶端中的該服務器的連接時,請確保使用該密碼。
啟動rdircd守護程序: ./rdircd --debug
將IRC客戶端連接到“ localhost:6667” - 默認收聽/綁定主機和端口。
(請參閱./rdircd --conf-dump-defaults或相應的CLI -i/--irc-bind / -s/--irc-tls-pem-file選項,用於在不同的主機/端口/端口和TLS套接字包裝上綁定,對於非localhost連接)
使用IRC /list命令查看所有加入的Discord服務器 /公會的頻道:
Channel Users Topic
------- ----- -----
#rdircd.control 1 rdircd: control channel, type "help" for more info
#rdircd.debug 1 rdircd: debug logging channel, read-only
#rdircd.monitor 1 rdircd: read-only catch-all channel with messages from everywhere
#rdircd.leftover 1 rdircd: read-only channel for any discord messages in channels ...
#rdircd.voice 1 rdircd: read-only voice-chat notifications from all discords/channels
#rdircd.monitor.jvpp 1 rdircd: read-only catch-all channel for discord [ Server-A ]
#rdircd.leftover.jvpp 1 rdircd: read-only msgs for non-joined channels of discord [ Server-A ]
...
#me.chat.SomeUser 1 me: private chat - SomeUser
#me.chat.x2s456gl0t 3 me: private chat - some-other-user, another-user, user3
#jvpp.announcements 1 Server-A: Please keep this channel unmuted
#jvpp.info 1 Server-A:
#jvpp.rules 1 Server-A:
#jvpp.welcome 1 Server-A: Mute unless you like notification spam
...
#axsd.intro 1 Server-B: Server info and welcomes.
#axsd.offtopic 1 Server-B: Anything goes. Civility is expected.
信息註釋此處:
/j #axsd.offtopic ( /join ),就像您使用常規IRC一起查看 /發布MSG。
IRC側的通道連接/零件不會以任何方式影響不和諧。
Run /topic (often works as /t ) irc-command to show more info on channel-specific commands, eg /t log to fetch and replay backlog starting from last event before last rdircd shutdown, /t log list to list all activity timestamps that rdircd tracks, or /t log 2h to fetch/dump channel log for/from specific time(stamp/span) (iso8601 or a simple relative format).
可以在#rdircd.control Channel,#rdircd.debug chan中使用守護程序控制/配置命令,可用於調整各種日誌記錄,並更仔細地檢查守護程序狀態和協議,將“幫助”發送到其中列出可用命令。
有關各種支持配置設置的廣泛輪廓,請參見rdircd.defaults.ini文件( ./rdircd --conf-dump-defaults的輸出),以及以下特定用途的更多信息。
這裡收集了有關各種可选和較明顯功能的註釋。
有關更多一般信息,請參見“用法”部分。
可以使用-c選項指定多個INI文件,以順序相互覆蓋。
最後一個將被更新WRT [state],token =和類似的運行時內容,以及通過#rdircd.control頻道命令設置的任何值,因此使用AUTH和選項指定持久配置,並為該動態狀態指定持久配置,並單獨(最初為空)。
例如./rdircd -c config.ini -c state.ini 。
--conf-dump以打印所有這些組裝的INI。
--conf-dump-defaults標誌可用於列出所有選項及其默認值。
頻繁的狀態時間戳更新是在就位(小固定長度值)的,但是在寫入之前檢查ctime,因此無論如何還是可以隨時手動編輯任何這些文件。
將嘆息發送到腳本或控制通道中的“重新加載”命令應加載並按照相同的順序從所有配置文件中應用值。請注意,該操作不會將文件中缺少的任何值重置為其默認值,只能將其明確設置在當前配置的頂部。
RDIRCD(和Discord)中的所有聊天都是頻道。
IRC的 /Q, /QUERY和 /MSG不能以IRC典型方式使用。
要在任何私人聊天中交談,請加入#me.chat。 <username>的頻道,其行為與任何其他Discord/rdircd頻道一樣。
當前無法從RDIRCD創建新的私人聊天,將其他客戶端或WebUI使用(或要求某人先與您聯繫),但是一旦創建了私有聊天頻道,也可以在RDIRCD中使用。
另請參見自動加入頻道和 /或 /或 /加入EG#rdircd.leftover.me頻道,可在需要時可靠地監視私人消息。
在所有代表DISCORD頻道的IRC頻道中 - 發送/topic (或/t速記通常在IRC客戶端中支持) - 它應該在所有特定頻道特定命令上打印出最新信息,例如:
/t info - 顯示一些內部公會/渠道信息,例如ID等,以命名為Renuames。
應在Discord上打印精確的頻道名稱(不帶RDIRCD所做的任何本地重命名或Discord-cir-to-cir translation),其主題,類型等。
/t info {user-name...} - 在此不和諧中查詢用戶名(或其中一部分)上的查詢信息。
例如, /t info joe137將在頻道所屬的Discord服務器上查找joe137用戶,並像它們的各種不和諧名稱一樣打印有關它們的信息。
/t log [state] - 重播歷史記錄以來為“狀態”點(默認情況下最後一個rdircd停止)。
/t log (與/t log 1相同),例如,在rdircd重新啟動後,可以使用discord,以查詢所有可能在停止後發布的消息,以及在它重新啟動之前(從那時起)。
或/t log 0要檢查自Rdircd所看到的最後一個味精以來,對於不和諧 /網絡是薄弱而可能會丟失的情況。
(其中這1和0數字是指從/t log list輸出中保存的時間戳,在INI文件中的[state]下存儲 /更新)
它也可以與絕對時間或相對時間一起使用,例如/t log 15m以在過去15分鐘內請求 /重播頻道歷史記錄,或/t log 2019-01-08 12:30以重播歷史記錄,因為該特定的RDIRD-LOCAL-LOCAL-LOCAL TIME(除非在那裡指定了時區)。
任何Discord代理頻道中的Just /t或/topic都會列出更多此類命令,以及有關如何使用它們的更多信息。
可以使用s/hoogle/google/快速修改/重新定詞/澄清最後一行的SED-Replacement命令可以編輯發送到Discord通道的最後一條消息。
或//del命令可用於刪除它 - 請參見下面的“快速編輯/刪除”部分。
@silent郵件中的前綴命令可以抑制有關它的用戶通知(在下面的某個地方也解釋了)。
在#rdircd.control和#rdircd.debug之類的特殊頻道中:發送h或help 。
他們可以有一些很長的支持命令列表,例如,這裡是#rdircd.control的一些命令:
status (或st )可用於檢查Discord和IRC連接Infos。
connect / disconnect (或on / off )命令可用於手動控制Discord連接,例如一次性用法,或者在本地網絡下降時暫時抑制失敗的CONN警告。
set irc-disable-reacts-msgs yes - 臨時 - 可見的不和諧反應通知(使用set命令)。
或set -s irc-disable-reacts-msgs yes使其永久( -s/--save flag以保存值為INI配置文件)或無參數的簡單set以查看所有常規配置選項及其值。
rx Block mee6 bot-noise = (?i)^<MEE6> - temp-block mee6 bot中的所有消息。
(請參閱下面有關此過濾的部分,或在技巧和彈奏下的更多此類內容的示例)
...還有更多 - 類型的help ,以獲取完整的最新信息。
#rdircd.monitor可用於從所有連接的服務器中查看活動 - 獲取所有消息,並以相關的IRC通道名稱為前綴。
#rdircd.monitor.guild(其中“ guild”是哈希或別名,請參見上文)是特定的Discord Server/guild的類似接收通道。
#rdircd.monitor.me可以有用,例如,監視Discord帳戶的任何私人聊天和消息(另請參見自動加入頻道示例)。
#rdircd.leftover and similar #rdircd.leftover.guild channels are like monitor channels, but skip messages from any channels that IRC client have JOIN-ed, including eg /join #rdircd.leftover.game-x hiding that "game-x" discord msgs from global catch-all #rdircd.leftover, but not counting #rdircd.monitor channels (ie joining them doesn't affect “剩菜”以任何方式)。
#rdircd.voice是一個類似於#rdircd.monitor的頻道,但僅捕獲語音聊天事件通知,才能及時跟踪這些事件。
如果不需要,可以忽略這些頻道,或者通過將例如chan-monitor設置為[IRC] INI Config-File部分下的空值完全禁用。例如,在那裡默認情況下,人均語音活動頻道是默認的。
配置文件還具有[UNMONITOR]部分,用於可選的頻道名稱列表,例如:
[unmonitor]
# All filters are applied to channel names and are case-insensitive
Ignore this particular " bot-commands " channel = game-X.bot-commands
skip forum threads in " game-X " guild = glob:game-X.forum.=*
" wordle " threads in any guild (and chans ending in .wordle) = glob:*.wordle
Don ' t show threads in any forum-like channels = re:^[^.]+ . (forum|discuss) . =.*
disregard all voice-chat stuff = glob:*.vc該配置部分中的密鑰(如“ =”的部分)被忽略,並且可以是任何內容,例如,要么說解釋模式的註釋(如上所述),而值是確切的頻道名稱(帶有discord prefix,可選#-Prefix),或“ glob:glob:”/“ re:”/“ re: <some-key/comment> = glob:<wildcard-pattern>或<some-key/comment> = re:<regexp-pattern>行 - 請參見上面的示例。
這些過濾器匹配的頻道名稱將從監視通道中刪除,因此可以用來定義您不在乎且不想在那裡看到的垃圾郵件列表。
#rdircd.control中的“ unmonitor”(或“ um”)命令可以隨時添加/刪除此類過濾器。另請參見match-counters配置選項,以跟踪是否仍需要/使用特定規則。
監視通道中的消息僅限於特定的長度/線,以避免長時間和/或多行MSG的過度洪水。 [IRC]配置部分下的“ Len-Monitor”和“ Len-Monitor-lines”參數可用於控制這些限制,請參閱“ ./rdircd”。還有一些選項可以更改監視頻道的名稱格式。
在IRC上,每個人都有一個名稱,但與Discord並非如此,每個用戶都可以在這裡具有以下名稱:
login - 不和諧“用戶名”,獨特地識別每個用戶。display - 用戶在Discord帳戶設置中設置的“顯示名稱”,而不是唯一。nick - 服務器和朋友“暱稱”,設置在Discord Server設置中,並非總是由您設置的。 login是最接近IRC暱稱的概念,因為它是全球唯一的,一致的,簡短的,僅限的,並且可以通過在[Discord]部分中設置name-preference-order = login option(而不是默認)來使用。
官方不符號客戶端首先顯示其他名稱,這就是為什麼name-preference-order選項默認為nick display login值,該登錄登錄值首先使用Discord/Friend特定的暱稱(如果有),則落後於帳戶設置中設置的用戶設置的自由形式,否則其登錄名。
IRC不允許使用的其他用戶集暱稱中的其他東西也可以用常見的Unicode字符,例如“·”中間點的空格,例如<> <> <>帶有Unicode箭頭的<>常見的IRC-NICK括號。截斷了很長的不和諧刻痕。
目前,沒有關於用戶更改其特定於DISCORD的顯示/暱稱的IRC通知,並且不必是唯一的,這可能會使他們很難告訴誰,如果他們出於任何原因而繼續更改刻痕。
所有這些都是可通過INI文件設置(或#rdircd.control Channel)配置的,因此,如果它變得太愚蠢且發瘋,請設置name-preference-order = login以使用唯一的一致的IRC友好型划痕,以適應所有人。
IRC /who命令或/topic info可以幫助在這些名稱之間翻譯,例如/t info john1234可以用來打印頻道緩衝區中該名稱 /登錄名的信息,其中應包括所有在該特定不和諧中具有該名稱的部分匹配的用戶,而/who命令搜索search as search ass search ass search ass search ass las las concovers asl as com com com incom incovers。
(更像是“重命名”而不是“別名”,因為舊名字不繼續為這些工作)
可以在配置文件中定義,以替換基於哈希的兩個前綴或服務器頻道名稱,並使用對您更可讀/令人難忘或有意義的內容:
[renames]
guild.jvpp = game-x
guild.sn3y = log-bot
guild.sn3y.chan-fmt = logs/{name}.log
chan.some-long-and-weird-name = weird
chan.@ 710035588048224269 = general-subs
user.noname123 = my-pal-bob
user.@ 123980071029577864 = joe這應該:
將例如#jvpp.info變成#game-x.info-字母群會-ID到更有意義的前綴。這將適用於該不和諧中的所有渠道 - “公會”重命名。
更改“ sn3y” Discord的頻道名稱的格式,從#sn3y.debug到#logs/debug.log之類的東西 - 更改頻道名稱格式。
格式模板使用python str.format語法,帶有“名稱”(通道名)和“前綴”(guild前綴 - 將在此示例中為“ log -bot”)值。默認格式為{prefix}.{name} 。
此格式選項不影響監視器/剩餘通道名稱(例如#rdircd.monitor.log-bot或#rdircd.leftover.game-x) - 請參見“ Chan-Monitor-Guild”和“ Chan-Leftover-Guild”和“ Chan-Leftover-Guild”選項[IRC]部分。
重命名為較長的頻道以較短的名稱(保留行會前綴) - “ chan”重命名。
請注意,這會影響此類頻道名稱存在的所有行會,並且源名稱應為IRC格式,與 /列表相同,並且是RFC1459-Casempapped(與IRC相同)。
重命名具有ID = 710035588048224269的頻道為“ Memes”(保留公會前綴) - 使用 @Channel -ID Spec的“ Chan”命名。
可以通過在相應的IRC頻道中鍵入/t info主題命令來找到那個長的Discord頻道標識符(也稱為“雪花”),可用於參考該特定頻道,即在該一台Discord服務器上重命名#general,而不是重命名所有#General Channelels。
當兩個頻道在同一不和諧中具有相同的確切名稱,並且通常會分配.<id-hash>非描述性後綴。
重命名夫婦用戶,並由他們的Discord用戶名和ID引用。
/t info <nick-or-part-of-it> discord頻道中的命令或類似/who irc-command中的命令>命令可以幫助查找Discord ID,例如那裡使用的ID。
目前,僅針對異常前綴和頻道實現列出的重命名類型,但是[IRC]部分下的選項也有一些選項,用於為System//Monitor/Monitor/剩餘和私人-Chat頻道設置名稱 - “ Chan-sys”,“ Chan-private”,“ chan-private”,“ chan-monitor”,“ chan-monitor”(SEE SEE SEE)。
例如,設置chan-monitor-guild = {prefix}例如,要使#game-x頻道在該不和諧中的所有消息中捕獲,而無需默認的長#rdircd.monitor。 * prefix。
Discord私人消息創建並發佈到“ ME”服務器/協會中的頻道,與在Discord WebUI中相同的頻道,並且可以與任何其他公會/頻道(列表,JOIN/PART,SEND/RECV MSG等)相同的方式進行交互。
加入#rdircd.monitor.me(或#rdircd.monitor,請參見上文),以獲取所有新的msgs/chats,以及關係更改通知(朋友請求/adds/emoves)作為通知。
接受朋友請求並添加/刪除這些可以通過常規的Discord WebUI完成,並且不會以任何特殊的方式在此客戶端中實現。
另請參見下面的自動加入頻道部分,以獲取一種簡單的方法,可以通過邀請在IRC客戶端中彈出新的私人聊天。
“線程”是一個不和諧功能,允許非ADMIN用戶隨時為特定主題創建瞬態的臨時子渠道,這些主題是自動刪除(“存檔”)之後(例如一天)。
Discord“論壇”頻道基本上是頻道,人們只能在theads中創建和交談,並列出那些更換默認頻道聊天的人。
所有非倉線都應在RDIRCD頻道列表中顯示為常規IRC通道,並帶有#gg.general。 = fot5. = fot5.的名稱。
有幾個選項可用於查看父頻道的線程和與線程進行交互(主要是在[不和諧]部分中,請參見-conf-dump-defaults輸出):
[irc]
thread-chan-name-len = 30
[discord]
thread-id-prefix = =
thread-msgs-in-parent-chan = yes
thread-msgs-in-parent-chan-monitor = no
thread-msgs-in-parent-chan-full-prefix = no
thread-redirect-prefixed-responses-from-parent-chan = yes
...但是,即使有所有這些禁用,也應在啟動線程時將簡單的通知發送到頻道,以免完全錯過它們。
不支持從IRC,不合時宜的舊線程或管理這些線程,並且在IRC中加入線程通道實際上並不是在Discord UI中“加入線程”(以頻道名稱固定),但是發布任何內容都應該自動執行此操作。
[IRC]部分中的“ Chan-Auto-Join-RE”設置允許指定REGEXP以匹配頻道名稱(無#前綴),以自動加入時,當其中任何消息出現時。
例如,可以自動加入任何#me。 *通道(直接消息),可以使用正則表達式值(Python“ re”語法):可以使用:
[irc]
chan-auto-join-re = ^me.或讓IRC客戶端自動加入所有通道,請使用chan-auto-join-re = .
此選項的空值(默認值)將與眾不同。
這可以用作通過#rdircd.monitor/剩餘通道跟踪新內容的替代方法。
可以在運行時使用#rdircd.control通道中的“ set”命令(與任何其他值相同)在運行時進行調整,以例如臨時啟用/禁用此功能,以適用於特定的不和諧或頻道。
提及是Discord上的@username標籤,旨在提醒某人直接消息。
使用默認配置,當您看到Eg <Galaxy?·Brain> Hi!並想回复突出顯示它們,發送Hey @galaxy and welcome可能會起作用。可以肯定的是,還可以使用其完整的IRC尼克。
How it works: if rdircd matches msg-mention-re regexp conf-option against something in a message being sent (eg @galaxy @-mention above), that'd be treated as a "mention", which is either uniquely-matched and translated into a discord mention in the sent message, or returns an error notice (with nicks that match that mention ambiguously, if any).
默認值應該看起來像這樣:
[discord]
msg-mention-re = (?:^|s)(@)(?P<nick>[^s, ; @+!]+)它可以匹配任何類似單詞的空間或標點符號分隔@nick在發送行中提到的。
REGEXP(Python“ Re”語法)必須用Nick/username查找字符串命名為“ Nick”組,該字符串將被Discord Tage替換為Discord Tag,並且所有其他捕獲組(即沒有嗎?: :)將被剝離(例如@ in trone @ in forgexp中的 @)。
上面的默認REGEXP仍應允許發送EG @something在WebApp中出現非高光(並且由於Markdown引起的 ),因為由於(?:^|s)零件不匹配,因為該部分是由於BackSlash前綴所致。
作為另一個例子,要在生產線開始時具有經典的IRC風格亮點,可以使用Regexp:
msg-mention-re = ^(?P<nick>S+)(:)(?:s|$)
並應將EG mk-fg: some msg轉換為@mk-fg some msg ( @-part呈提及標籤)。 REGEXP中包含尾隨空間,以避免匹配URL鏈接。
對於ID特定的Discord用戶,將以以下方式使用“ Nick”組:
與公會相關的所有IRC名稱(消息作者,反應,私人頻道用戶等)與所有最近與行會相關的IRC名稱的不敏感匹配。 user-mention-cache-timeout配置選項控制“最新”超時。
查找唯一的名稱由前綴完成,與 @鍵入 @鍵入後的WebUI中的Discord相同。
如果找不到緩存或唯一的匹配 - 將發出錯誤通知,並且不會發送消息。
這種嚴格的行為旨在避免任何無意的錯誤翻譯,並且通常只能通過拼寫錯誤地強調錯誤的人。
相關的msg-mention-re-ignore選項(與上述圖案的完全捕獲相匹配的REGEXP)也可以用來跳過一些非註冊事物,從這樣的處理中,否則第一次RegexP也可以從中刪除它們,從它們中刪除了捕獲的組,這些捕獲的組也可以用於EG DUSO逃脫。
請注意,Discord用戶列表可能非常龐大(500K+用戶),不會按頻道拆分,並且不打算由客戶端預先挑選,僅查詢完成或可見的零件,而這些零件並不能很好地映射到IRC,因此所有這些魔術。
為人類表情符號配置了類似的REGEXP:
msg-emoji-re = (?:^|s)(:)(?P<emoji>w+)(:)(?=[^w]|$)
例如, I use :Arch: btw來自IRC的REGEXP,使用此Discord的表情符號(不敏感)的Regexp,查找/替換“表情符號”組,然後在I use ? btw ,或返回錯誤通知如果該不和諧中沒有此類表情符號,而不是在通用Unicode列表中。
將msg-mention-re / msg-emoji-re設置為空值以禁用此類翻譯。
類似於上面的Discord用戶所提到的,有一個特殊的Regexp-option匹配命令,該命令被解釋為“編輯或刪除發送給此通道的最後一條消息”。
默認的REGEXPS看起來像這樣(Check - CONF-DUMP-DEFAULTS JIC):
[discord]
msg-edit-re = ^s*s(?P<sep>[/|:])(?P<aaa>.*)(? P =sep)(?P<bbb>.*)(? P =sep)s*$
msg-del-re = ^s*//dels*$它們匹配SED/PERL/IRC般的後續修正案,例如s/spam/ham/和//del LINE,它永遠不會發送到Discord,僅將其用作內部命令。
( s|/some/path|/other/path|和s:cat /dev/input/mouse0 | hexdump:hexdump </dev/input/mouse0:默認的edit edit-regexp也允許語法,就像使用sed一樣,與sed一樣,可以更容易地處理諸如path之類的通用途徑,可以在其中包含這些chars chars chars hern chorm chars)
這些由這些命令匹配的兩個命令均在RDIRCD發送到同一Discord頻道的最後一條消息上運行,並且//del簡單地刪除了最後一條消息,然後編輯運行Python re.sub()(PCREIKE)REGEXP-REGEXP-REPLACEMENT功能。
“ msg-edit-re” regexp option值匹配類似sed的命令必須命名為“ aaa”和“ bbb”組,它們將分別用作模式和替換為re.sub()。
如果編輯似乎沒有以任何方式更改最後一個消息,它將被丟棄,還會生成IRC通知響應,以表示替換不起作用。
成功的編輯/刪除也應像往常一樣通過[edit]或此類前綴(可在[IRC]部分配置)照明。
可以通過Discord WebUI編輯任何較舊的消息 - 該客戶端僅跟踪最後一條消息,以便簡化的後續操作固定,這無非是。
與上面的快速編輯/刪除相似,“ msg-flag-Silent-re”選項可以匹配/刪除消息中的“ @silent”前綴(默認情況下),該選項(默認情況下)會禁用與官方客戶端發送Discord推送通知。
該消息和傳入消息上的類似消息標誌並未以任何方式表示,因為它們似乎與IRC客戶端無關。
config可以具有[發送置換]部分,以阻止或regexp-Regexp-Replace(由您)從IRC發送的消息。
這可用於添加特定於DISCORD的標籤,Unicode速記,表情符號,貼紙,塊/替換特定的鏈接,甚至在將MSG代表MSG到Discord之前。
以下是INI文件中的外觀:
[send-replacements]
*. unicode-smiley = (^| ):)( |$) -> 1?2
*. twitter-to-nitter = ^(https?://)((mobile|www).)?twitter.com(/.*)?$ -> 1nitter.ir4
guildx.never-mention-rust! = (?i)brustb -> <block!>
guildx.localize-color-word = bcolor(ed|iS+)b -> colour1每個鍵的形式為discord-prefix> "." comment ,具有特殊*前綴,將規則應用於所有不符號,而值為regexp " -> " <replacement_or_action帶有一個特殊<block!> action-value,以阻止Regexp Match上使用錯誤答案發送MSG。密鑰的“評論”一部分可以是任何任意獨特的字符串。
因此,在發送EG test :) IRC上的MSG時,Discord會得到test ? 。
與其他REGEX使用選項相同,Regexps具有Python“ RE”模塊語法,該語法是通過Re.Sub()函數應用的,使用來自Config Value AS-IS的RAW字符串,而沒有任何特殊的ESCAP或解釋。
替換的應用與指定的順序相同,但是使用*鍵之前的 *鍵,然後在處理之前添加不和諧標籤之前,因此通常可以在此處使用@username之類的@username之類的內容也可以在此處使用。
#rdircd.control頻道具有“ repl”命令,可以在即時編輯這些規則。
如果加入#rdircd.monitor頻道,請參見 - 例如 - 這樣的消息:
<helper-bot> #pub.welcomes :: Welcome!
...並認為“不想再看到這樣的消息!” -Config Files'[RECV-REGEXP-FILTERS]#rdircd.control Channel中的部分或相應的“ RX”命令可以提供幫助。
根據“這樣的消息”的含義,以下是將其濾除的一些方法:
[recv-regexp-filters]
discard msgs from this bot = ^<helper-bot>
ignore all msgs in that channel of that discord = ^S+ # pub.welcomes ::
drop all msgs from " pub " discord = ^S+ # pub.
no messages from # welcomes channels of any discord pls = ^S+ #w+.welcomes ::
never see " Welcome! " message-text again!!! = ^S+ # S+ :: Welcome!$
some combination of the above = (?i)^<helper-bot> # w+.welcomes ::
...(在Regex101.com上調整EG的最後一個示例,以了解更多動手理解)
該部分中的行具有通常的<key> = <regexp>形式,其中<key>部分可以是任何東西(例如,要解釋regexp的註釋,如上所述,如上所述),而<regexp> value是一個正則表達式,可以匹配<user> #discord.channel-name :: message text格式中的heass bot-bot-bot-bot-bot-bot-bot bys在上面的helper-bot s。
從不和諧中收到的任何消息都將按順序與所有Regexps匹配,停止並丟棄第一(任何)匹配的任何地方。因此,最好盡可能精確地寫入模式,避免它們匹配其他任何內容並意外刪除無關的消息。
與其他一些CONC選項一樣,使用此類過濾器可能需要對正則表達式的基本知識 - 這是指向這些過濾器的鏈接(儘管網絡上有100個此類教程)。
在此處,特定的Regexps使用類似PCRE的Python RE語法,並帶有re.dotall標誌集( .匹配多行消息中的newlines)。我還建議通常添加(?i)對案例不敏感的匹配標誌,因為IRC划痕和頻道名稱忽略了字符案例,並且可以在客戶端中以誤導性/非企業方式顯示。
[RECV-REGEXP濾波器]的更多隨機示例,包括。更高級的CNF怪異:
[recv-regexp-filters]
disregard wordle thread there = ^S+ # pub.general.=w8mk.wordle ::
ignore " wordle " threads everywhere = ^S+ # S+.=w{4}.wordle ::
activity-level bots are annoying = (?i) advanced to level d+[ !]
gif replies of YY in ZZ = (?i)^<YY> # ZZ.S+ :: (-- re:[^n]+n)?[att] .*/imaged.gif?
; ; Advanced stuff: connect multiple regexps via CNF logic (Conjunctive Normal Form)
; ; If key starts with "∧ " (conjunction symbol), it's AND'ed with previous regexp
; ; ¬ (negation) in that prefix inverts the logic, so e.g. "∧¬ ..." is "and not ..."
; ; Disjunction (∨) is the default behavior and doesn't need the (implied) prefix
; ; Any complex logical expression can be converted to such CNF form -
; ; - use calculators like https://www.dcode.fr/boolean-expressions-calculator
Drop welcome msgs in welcome-chans = (?i)^S+ # w+.S*welcomeS* :: .*bwelcomeb.*
∧ but only if they have an exclaimation mark in them somewhere = :: .*!
∧¬ and not from this specific " lut " discord-prefix = ^S+ # lut.
Most channels here are not relevant = ^S+ # myc.
∧¬ except these ones = ^S+ # myc.(announcements|changelog|forum)[. ]
∨ but skip github CI logs there = ^<github> # myc.幾乎所有內容都可以與聰明的右發相匹配,因此CNF-Logic的內容很少有用,但比在Regexps中表達任意排序或否定可能更簡單。
另請參見match-counters配置選項,以跟踪是否仍需要/使用特定規則。
最有用的可用於調試 - /who命令可以解決指定的ID(例如,從協議日誌)到渠道/用戶/guild信息:
/who #123456查找/描述ID = 123456的通道。/who %123456服務器/公會ID信息。/who @123456用戶ID查找。上面的所有ID值在其類型中的DISCORD服務中都是唯一的。
/who @John·Mastodon用戶IRC nick或名稱/登錄查找。
查詢所有名稱的不和諧之處,並且可以返回相同或非唯一名稱的多個結果。檢查與IRC名稱或其他用戶信息相對應的精確划痕/顯示/登錄名是有用的。
/who *665560022562111489將Discord Snowflake -ID轉換為日期/時間。
所有這些命令的結果都應被傾倒到服務器緩衝區(而不是頻道),而不管它們是從何處發出的。
在/t info Discord上的IRC頻道相對應的/topic info頻道中,可以使用有關鏈接的Discord Channel及其服務器 /Guild的更多信息。
/t info <username>還可以在該不和諧中打印有關用戶的信息(與所有連接的不和諧中的名稱相比,與/who @<username>不同),例如/t info john將為名稱中具有“ John”的任何人打印信息。
這些查詢中的用戶名可以匹配精確的IRC名稱或不和諧用戶名,在這種情況下,將返回結果,或者製作了更通用的服務器端查找,可以以任何類型的Discord名稱返回匹配項(有關更多信息,請參見Deopors on Discord of Discord name)。
由於一個例外,Discord名稱翻譯是“主要”確定性的 - 在同一服務器/公會中具有相同(casemapped)IRC名稱的通道,而Discord允許。
當發生衝突時,木名被.<id-hash>在不和諧上重命名衝突的渠道將重命名IRC Chans,以消除不必要的後綴。此類命名也會影響線程通道。
請注意,當頻道重命名(包括名稱衝突)時,IRC通知行始終在受影響的渠道中發出,任何相關的顯示器/剩餘渠道都應更改主題,以反映出老名頻道不再有用,並且在那裡發布MSG應該立即發出有關其的立即警告。
附件的Discord CDN URL最終可能會長時間使用相同的主機,其中的長度不和諧/通道ID,然後是實際文件名,並且?ex=...&is=...&hm=...之後的CDN參數的跟踪。
但是,許多Linux IRC客戶端在終端模擬器中運行,這些終端模擬器通常支持OSC 8終端超鏈接標準,因此可以以更緊湊,更可讀的形式顯示可單擊的鏈接。
例如,此附件在Discord CDN上:
https://cdn.discordapp.com/attachments/1183893786254905414/1206216641877377024/20240211_My_Cat_Photo.jpg?ex=65db33c9&is=65c8bec9&hm=9c1dbecbfb2f9edf2302ec078f5e62fffa7f8c2f32e5cd6e3563ae25d8a356e1&
可以在這樣的終端中顯示:20240211_my_cat_photo.jpg
即與瀏覽器中顯示的超鏈接顯示的方式相同。
默認情況下是禁用的,但是如果您使用可能支持這些的終端IRC客戶端,則set terminal-links = yes config file中的選項或通過#rdircd.control Channel中的set命令來嘗試一下。
相鄰的terminal-links-re和terminal-links-tpl選項可用於控制鏈接的哪一部分顯示為其可見名稱,哪個端子特定的逃生字符要使用以及此類自定義。
Discord有語音通道,除文本外,人們還可以口頭交談,共享相機或屏幕截圖(又稱流媒體,屏幕共享)。當然,IRC協議不支持這樣的內容,但是當有人開始交談,跳入不同的Discord客戶端(例如在瀏覽器中打開它)並從那裡使用這些渠道時,獲得通知是有用的。
所有與Discord語音聊天相對應的IRC頻道都會自動獲取.vc後綴(除非重命名),並在其中獲取有關語音活動的通知消息,但僅限於以下事件,以避免過於垃圾郵件:
voice-notify-after-inactivity超時之後,在語音頻道中發生某些活動(例如join/well/take/etc)時(即自從那裡的語音源通知以來,默認值= 20分鐘)。並通過voice-notify-rate-limit-tbf值設置的額外速率限制,以連續通知多達5個事件,但否則在5分鐘內不超過一次(“令牌桶算法”是從技術上講,該限制是如何實現/起作用的)。
如果上面的描述聽起來令人困惑,則此處的配置調整以刪除語音活動事件通知的所有限制 - 嘗試使用這些限制,如果它們變得太垃圾郵件(也許從不!),請稍後重新閱讀本節:
[discord]
voice-notify-after-inactivity = 0
voice-notify-rate-limit-tbf = 0#rdircd.voice Monitor-channel(s)也只能用於跟踪跨不和諧/通道的語音chat通知,並可能通過#rdircd.control中的“ um”命令過濾或[unmonitor]中的“ um”命令過濾。
IRC慣例是將暱稱視為“突出顯示” - 比常規頻道消息更值得通知的事件,因此,如果私人頻道中的消息始終為IRC客戶端突出顯示刻痕,則可能會很有用。
可以使用prefix-all-private選項:
[irc]
prefix-all-private = mynick: 也可能有必要加入Monitor/剩餘渠道或設置自動加入頻道,以便IRC客戶端將收到新的PM。
出於各種實際原因,沒有通過直接的IRC消息實施私人聊天,即通過頻道使所有內容都可以通過,因為它在不和諧方面可以使用,他們可以有多個用戶,可以輕鬆列出這些用戶,以查詢主題/歷史記錄/等等等。
如果所有prefix-all-private都不夠遠,則有一個類似的prefix-all選項,可以在所有消息中添加前綴。
默認情況下,[discord] msg-ack=yes啟用私人聊天中接收到的消息的發送(延遲)ACK,因此Discord將其視為讀取,並且不會發送有關它們的電子郵件通知。可以在配置文件中禁用或調整。
EG [RECV-REGEXP濾波器]阻止的消息或在沒有IRC客戶端連接時收到的消息不計數。
如果IRC客戶端支持IRCV3鍵入通知並啟用了這些通知,則默認情況下,RDIRCD將轉發來自Discord用戶/頻道的ircv3,可以通過在[IRC]配置部分設置typing-interval = 0來禁用,或可以將Interval/timeout值設置為INTERTAL/TIMEOUT值,可以將其調整為IRC應用程序更好地工作。
單獨的typing-send-enabled選項控件是否將IRC輸入通知發送到Discord頻道。默認情況下,由於隱私原因,它被禁用,並且可能還需要在IRC客戶端中明確啟用。
任何IRCV3功能都可以通過ircv3-caps選項禁用,例如,如果它們在rdircd或客戶端中存在問題,則可以禁用。
當Discord網關以OP = 9“無效的會話”事件響應身份驗證嘗試,而不是重新連接之後,默認情況下應該發生這種情況,因為大概它以相同的方式失敗。
這通常意味著使用Discord服務器的身份驗證失敗了,但是(非常頻繁)的Discord服務中斷,Gateway還返回了一段時間後的所有登錄名,大概是在無法訪問Auth Auth Auth Backends時將其用作後備。
這可能會變得煩人,因為當不和諧本身處於困境時,必須手動強制重新連接。
如果應該是正確的,則可以通過在[Discord] INI部分中設置ws-reconnect-on-auth-fail = yes option來解決,這將迫使客戶端繼續重新連接。
不知道為什麼或何時發生,但在此和其他類似的Discord客戶端中報告了一些用戶 - 請參閱此處的第1期以及其中的鏈接。
修復與Bitlbee -discord相同 - 通過瀏覽器登錄,也許是從同一IP地址登錄,並將從此瀏覽器提取的auth令牌放入配置INI文件的[auth]部分,例如:
[auth]
token = ...有關如何從各種瀏覽器中提取該令牌,請參見Bitlbee-discord的Readme(在該鏈接上向下滾動)中的“用法”。
請注意,您可以使用多個配置文件(請參閱-c/--conf Option)通過單獨的文件來指定此令牌,除了主要的文件外,還以任何方式生成。
可以在本節中添加額外的token-manual = yes選項,以免嘗試以任何方式自動請求,更新或刷新該令牌。 DUNNO如果需要此選項,或者僅需要一次使用此類驗證碼 - login,然後以後自動令牌請求/更新可能會起作用(如果您以一種方式或另一種方式對其進行測試,請在第1期中留下註釋)。
到目前為止,我自己從未遇到這個問題。
最有可能的來源應該缺少一些新/不常見的不便事件的處理,或者可能是某個地方的錯誤 - 可以報告為GitHub問題。
為了獲取有關此問題的更多信息(因此報告不會無用的“不工作”),可以監視和/或啟用以下內容:
當問題發生以及是否崩潰時,腳本的標準錯誤流(Stderr)(不太可能)。
如果RDIRCD作為SystemD服務運行,例如journalctl -au rdircd通常應捕獲其輸出,但是還有其他方法可以啟用下面列出的日誌。
rdircd通常不應該崩潰,因為它處理自己的循環中的任何錯誤,只是重新連接或其他任何錯誤,但顯然發生了錯誤 - 必須在這些上打印一些Python Trackback。
找到一種複制問題的方法。
當發生一些奇怪的事情時,檢查是否可以追溯到某些特定的不和諧和事件(例如,使用了一些新功能),或者您當時所做的事情是最有用的,並檢查重複時是否再次發生同一件事。
知道這是非常有用的,因為可以使用任何類型的額外的伐木和調試輔助設備來複製問題,直到完全清楚那裡發生了什麼,或者可能如何避免輔助工具,如果固定不是選擇ATM。
加入#rdircd.debug頻道 - 任何警告/錯誤都應在此處登錄。
向其發送“幫助”(或“ H”)MSG,以查看對其進行的額外控件。
例如,在其中發送“級別調試”(或“ D”)將啟用詳細的調試記錄到該頻道(可以通過“級別警告”/“ W”再次禁用該頻道),但是使用日誌文件可能更易於 - 請參見下文。
將調試和協議日誌啟用到文件。
在任何已加載的rdircd ini文件中,添加[debug]部分,其中包含這樣的選項:
[debug]
log-file = /var/log/rdircd/debug.log
proto-log-shared = no
proto-log-file = /var/log/rdircd/proto.log /var/log/rdircd dir在此示例中應創建並僅用於運行rdircd,理想情況下,例如,將其創建為: install -m700 -o rdircd -d /var/log/rdircd
這樣的選擇應啟用那些自動旋轉日誌文件,這些日誌文件將隨時都有很多有關守護程序發生的一切的信息。
這兩個也可以在運行時從#rdircd.debug chan啟用/控制和/或查詢。
proto-log-shared選項(默認為“是”),並用於將Discord/irc協議日誌發送到同一日誌文件或#rdircd.debug Channel,但是如上所述,擁有兩個單獨的日誌可能會更容易。
可以通過日誌文件大小和旋轉計數來通過log-file-size , log-file-count , proto-log-file-size proto-log-file-count選項 - 運行rdircd --conf-dump-defaults以查看所有這些及其默認值(rdircd.defaults.inis.iniss.ini也有一些近期復制副本)。
當反复或長時間使用協議日誌運行時, proto-log-filter-ws選項可以方便地過濾出去的垃圾郵件無趣的事件,例如guild_member_list_update。
請注意,這些文件將包含各種敏感信息 - 從驗證數據到所有聊天和聯繫人 - 因此,可能不應在Intern In -Full或AS -IS上自由發布或自由共享,但絕對可以幫助識別/解決任何問題。
運行/version IRC命令至少應打印出諸如host 351 mk-fg 22.05.1 rdircd rdircd discord-to-irc bridge在第一行上,如果不是此Git Repo中的最新元素,這絕對有用。
通常,如果問題易於復制(例如“我在任何地方發送消息X並獲取此錯誤”),則可以在不深入挖掘更多信息的情況下進行報告,因為大概有人調試它也應該能夠做到這一點,但上面的信息仍然可以幫助您確定任何更不可思議的問題,或者可以識別任何解決這些問題的地方,以了解解決這些問題或解決這些問題。
我使用的一些配置調整,或在IRC等上#RDIRCD中提到。
請隨時建議您在此處添加的任何其他Lifehack。
通常,rdircd使用這些長期奇怪的“#rdircd.monitor”頻道名稱模板以及不必要的“#me.chat”。前綴,而不是這樣:
#DMs
#@some-friend
#@some-friend+other-friend+more-ppl
#rdircd
#rdircd.rest
#rdircd.voice
#rdircd.control
#rdircd.debug
#minecraft
#minecraft.general
#minecraft.modding
#minecraft.rest
在任何已加載的INI配置文件中使用這些行以使其工作如下:
[irc]
chan-monitor = rdircd
chan-leftover = rdircd.rest
chan-monitor-guild = {prefix}
chan-leftover-guild = {prefix}.rest
chan-private = {names}
[renames]
guild.me = DMs
guild.me.chan-fmt = @{name}這些選項按照相同的順序做到的:將“#rdircd.monitor”重命名為“ #rdircd”,將所有Discord特定的監視器通道設置為“ {prefix}”(EG“ #DM”或“ #MineCraft”),將私人 - 奇特頻道設置為使用人們的名字(s)。前綴,重命名默認為“ ME”公會(私人聊天)為“ DMS”,請使用更簡單的 @ +名稱格式。
默認值是嘗試變得更加明確和描述性的方式,但是一旦您知道所有這些頻道的用途,就可以輕鬆地將它們重命名為更短/更好,更方便的東西。
編輯消息時,通常會得到[edit] new msg text類的東西,但是它可以是✍️ new msg text或new msg text :
[irc]
prefix-edit =
prefix-embed = ?.{}
prefix-attachment = ?️
prefix-uis =
prefix-interact = ?
prefix-poll = ?️.{} 從這些選項中的末尾註意“空間和後斜線”,即從剝離這些和配置文件解析器的文本編輯器中保留值的後線空間(除非忽略任何領先/尾隨的空間,除非backslash刺破)。 prefix-embed和民意調查值需要{}佔位符,以便在哪裡放置ID/標籤。
另外,可以在#rdircd.control中使用set-command set irc-prefix-edit '✍️ '來配置和調整這些內容(或-s/--save到config中)。
除非啟用了終端IRC客戶端選項的OSC 8超鏈接,否則附件通常只是埋在其中的文件名的長鏈接:
<user> ?️ https://cdn.discordapp.com/attachments/813633048368761786/1313964897464246919/cat-pic.jpg?ex=674e6959&is=674d17d9&hm=2519bb427b1392bce87a0749ed664520d25493e509b8272170a66512f9e143d2&
但是,可以使用相同的OSC8構圖功能為EG GUI IRC客戶端獲得更可讀的版本:
<user> ?️ cat-pic.jpg LCak :: https://cdn.discordapp.com/attachments/813633048368761786/1313964897464246919/cat-pic.jpg?ex=674e6959&is=674d17d9&hm=2519bb427b1392bce87a0749ed664520d25493e509b8272170a66512f9e143d2&
使用這樣的配置:
[discord]
terminal-links = yes
terminal-links-emojis = no
terminal-links-tpl = {name} :: {url}(“ cat-pic.jpg lcak”末尾的“ lcak”位是鏈接的哈希,因此可以一目了然地告訴不同的“ image.jpg”附件)
通過IRC使用和不和諧可能會有些嘈雜,這是由於在各種監視器/剩餘的頻道或其他類似Un-ir-cor的功能中最終出現的垃圾通知,rdircd可以在某種程度上幫助減輕某種程度的減輕,但默認情況下通常不會,因為很難知道其他人真正關心的是什麼。
以下是一些隨機命令,可以在#rdircd.control頻道中嘗試:
um Noise from any bot-channels = re:.bots?(-.*)?$
um Ignore welcome chans = glob:*.welcomes
um Disregard all voice-chat events = glob:*.vc
um Memes belong in a circus = glob:*.memes
um Make food channels opt-in = glob:*.food
um Internet "politics" can get really spammy = glob:*.politic*
um There're probably better places for porn = glob:*.nsfw
rx MEE6 bot-noise anywhere = (?i)^<MEE6>
rx THX discord: people spamming edits = (?i)^<(person1|person2)> #THX.S+ :: [edit]
rx NSC: don't care about deletes = ^S+ #NSC.S+ :: --- message was deleted ::
rx NSC/THX: disable reactions here = ^S+ #(NSC|THX).S+ :: --- reacts:
啟用規則攻擊的計數器可以檢查這些規則是否以後是否仍然相關:
set discord-match-counters '1d 2d 4d 1w 2w 1mo 2mo runtime'
啟用這些啟用後,運行um或rx應顯示[ rule hits: ... ]在每個規則下,如果有任何要顯示的內容(但在rdircd重新啟動上重置!),否則,丟棄未使用的規則以使列表更加整潔可能是安全的。
set irc-disable-reacts-msgs yes
刪除裝滿Unicode垃圾的長長,令人困惑和愚蠢的暱稱:
set discord-name-preference-order 'login'
如果特定用戶的ASCII登錄也很煩人,請在config中使用[renames]在本地更改這些(有關更多信息,請參見本地名稱別名部分):
[renames]
user.somereallylongandsillyloginbecausewhynot = bob
user.@ 374984273184829999 = andy僅作為頻道和#rdircd.Leftover。 *等等。 *等等:
set discord-thread-msgs-in-parent-chan no
不要在/list上顯示語音聊天或“監視”頻道:
set irc-chan-voice '' set irc-chan-monitor ''
所有這些示例都不是持久的,只是為了嘗試它們並查看,但是所有使用的命令支持-s標誌將更改的值保存到last .Ini配置文件,否則也可以手動完成,如果其中任何一個有用,則可以保存。
這裡有一個良好且維護良好的替代客戶列表:
如今,有許多替代客戶,其中有很多攪拌,諸如此類的專用列表可能是發現這些的最佳方法。
如上面的“警告”部分中提到的,API文檔中的Bot VS用戶帳戶部分似乎禁止使用第三方客戶的人,與Discord Community指南相同。也許還違反他們的不和諧開發者服務條款,但是如果您只是使用Alt-Client,則不知道是否適用。
我確實要求Discord員工澄清此事,並在2020年11月左右得到了這一回應:
使用與WebApp相同的API的第三方Discord客戶端是否沒有任何有意義的自動化,超出了官方Discord應用程序,將被視為“自機”或“用戶機器人”?
IE絕對是所有第三方客戶都不使用Bot API違反Discord Tos,時期?
還是“自我機器人”或“用戶 - 機器人”語言僅適用於旨在自動化客戶端/用戶行為的特定子類,而不僅僅允許某人正常地在不符合下進行連接和聊天?
Discord不允許任何形式的第三方客戶端,並且使用這樣的客戶端可能會導致您的帳戶被禁用。我們的API文檔明確指出,使用我們的API需要一個機器人帳戶:“自動化正常用戶帳戶(通常稱為“自機”)在OAuth2/bot API之外被禁止,並且如果可以發現,則可能會導致帳戶終止。”
您可能要牢記的另一件事是,顯然,它也被認為是不和諧管理員的責任,以執行其服務條款,或者 - 大概 - 有可能關閉整個行會/社區的風險。
在同一電子郵件(2020年11月)中對此問題進行了澄清:
是否有義務不僅要遵循自己的服務條款(顯然),還可以在服務器內實施他們的知識,這是否有義務不僅遵循不僅遵循不遵循服務條款的義務?
即,如果Discord Server Admin知道某些用戶違反了TOS,是否認為他們有義務將其報告給Discord員工或採取行動以將其刪除(禁令)從服務器中刪除(禁令)?
根據當前的Discord TOS或內部策略,是否應該未能這樣做(即不採取已知TOS違規行動)導致Discord Server(也許是Admins的帳戶)終止或類似的懲罰性訴訟?
服務器所有者和管理員負責根據我們的服務條款和社區指南來主持其服務器。如果違反我們的條款或準則的內容已發佈在您的服務器中,則有責任適當地調節它。
因此,除非某些事情發生變化或我誤讀了Discord員工的職位,否則使用此客戶可以終止您的不和諧帳戶,而Discord Admins似乎有責任(如果他們意識到這一點)有責任禁止/報告其使用情況。
關於該主題的其他數據點和軼事:
不要以為Discord的“服務條款”文檔明確涵蓋了第三方客戶的使用情況,但是“ Discord Community指南” Kinda確實會涵蓋,如果您認為該客戶端是“自我機器人”或“用戶機器人”。
實踐中唯一重要的事情可能是實際的員工和特定服務器管理員在此問題上的立場和行動,這當然是一個私人平台/社區,一切都可以酌情決定。
與該客戶無關,在報告(由另一個用戶)報告後,一個人在警告(2020-01-30)之後收到了一個人,以提及他們使用了BetterDiscord(當時是/主要是當時的自定義CSS主題,AFAIK):

在2021年9月,由於“可疑活動”,使用不同的第三方客戶每天被要求重置密碼的人們在這裡提出了很多問題,在此期間在這裡提出(也請查看其他鏈接),似乎在一周之內就消失了。
該問題主題中至少有一個人也報告說,大約一周之後,出於大約相同的原因要求進行電話帳戶驗證,因此3P客戶的“可疑活動”也許並沒有真正消失。
啟動私人聊天時,無線客戶開發人員的ACC顯然因違反TOS而被阻塞。這個客戶沒有這樣的功能,但是無論如何,也許應該更謹慎,因為這似乎是主要的垃圾郵件向量,因此我認為更有可能受到監控。
在#RDIRCD IRC頻道中,一個人提到他們的Discord帳戶在其上啟用了一些反垃圾郵件機制,在不提供電話號碼和SMS挑戰的情況下登錄(以及在與RipCord客戶端的一個私人聊天開始之後,不提供電話號碼和SMS挑戰(以及諸如Google語音不工作的服務)。
“當時我聯繫了支持,他們只是回答說,一旦訂婚,他們就無法撤消電話號碼的要求。”
It also seems like Ripcord currently might be trying to mimic official client way more closely than rdircd script here does (where latter even sends "client"/"User-Agent" fields as "rdircd" and appears that way under Devices in User Settings webui), and such similarity might look like Terms of Service violation to Discord (modifying official client), instead of Community Guidelines violation (third-party client), but obviously it's just a guess就我是否重要而言。
還有一些HN評論闡明了此處的一個線程中的不和諧人員職位,儘管以上都不應視為確定性,因為第三方甚至支持員工的回應可能是錯誤的/誤導或過時的,並且這種治療可能在任何方向上,沒有明確指示的任何方向變化。
注意:只有在此處使用此API,只有通過公共信息進行,可能是錯誤的,並且會通過開放問題來感謝任何更新/建議/更正。
最後更新:2024-11-26
Discord API文檔似乎沒有涵蓋“功能齊全的客戶端”用例,這可能是因為明確不支持其API,並且違反了其規則/準則(有關詳細信息,請參見上面的警告部分)。
不過,最近的官方OpenAPI規格在Discord/discord-api-spec repo中可能具有更完整的文檔。
Discord API協議在版本之間更改,這些版本已在API文檔的更改日誌頁面上進行了記錄。
代碼已將API編號硬編碼為Discordsession.api_ver,它在更新後必須手動碰撞以根據需要處理新功能。
Auth使用無證件/API/AUTH/LOGIN端點來獲取電子郵件/密碼的“令牌”值,這不是OAuth2代幣,並且可用於所有其他端點(例如,郵政urls,網關等),而沒有任何http授權標頭的任何前綴。
發現它在其他客戶端中使用,如果有其他方法可以在EG Gateway Websocket上授權非行器 - 只有記錄的Auth 2是OAuth2,並且似乎不允許這樣做。
從一開始就顯然沒有證件並可以使用,所以猜測它現在可能會嚴重貶值,並在將來的任何時刻消失。
有一些非正式的文檔,供官方文檔的API和怪癖:
發送消息傳遞確認是通過從Gateway Websocket中匹配Message_Create事件中的唯一“ nonce”值的方法,並發送到REST API。
所有消息均以嚴格的順序發送(通過一個隊列),等待每個消息的確認,如果第一次失敗/times out dies-unders,則在每個失敗/丟棄的味精中流產。
這樣做是為了確保所有消息以與已發送或根本沒有發布的嚴格訂單到達。
Discord消息傳播API具有enforce_nonce參數(自2024-02-12以來),該參數允許從重複中安全地重試發布消息,但此刻的重新驗據僅在此處進行API速率限制。
API設計的獲取用戶列表甚至行會的用戶列表似乎並沒有得到很好的支持或打算。
有多個允許以有限的方式執行此操作的操作編碼,而這些操作編碼不適合大型不和諧(例如10K+用戶)。
request_guild_members(8)不返回任何結果,request_sync(12)不起作用,請求_sync_chan(14)可用於請求列表中的小切片,但一次只能要求一個(在請求時斷開連接)。
後者只能保留一部分在客戶端中可見的用戶列表,不支持整個過程中的適當分頁,並且只能在其中帶有索引的最後一個要求的更新 - 基本上是“我在這個行會/頻道中,我應該看到什麼?”客戶的要求。
Gateway Websocket上的某些事件是沒有證件的,這可能是由於實施後面的文檔滯後,或者由於它們不被視為對機器人有用的IDK。
Discord允許頻道和用戶具有完全相同的可見名稱,這對用戶而言並不重要(由於單向翻譯),但仍然不歧義IRC側。
不和諧的表情符號:smile:以多種不同的方式處理:
在所有不和諧中起作用並翻譯成Unicode角色的Unicode表情符號名稱中,例如:smile:
可以在當前Discord的自定義表情符號中找到,並由它的消息格式標籤代替,例如:debian: to像<:debian:12345>之類的標籤,DiScord客戶端將在與Linux相關的Discord中顯示為Debian徽標。
如果用戶具有不和諧硝基訂閱,則來自任何其他不符合的不符號自定義表情符號。
rdiRCD根本無法處理最後一個硝基案例(一種不和諧中的自定義表情符號),而前兩個案例則通過rdircd.unicode-emojis.txt.gz file(可選/可配置)彼此區分,該文件具有所有非custom emojis(〜6K of countraljis)的列表,使用Extract-unicode-emjs。
If generic emojis stop working in the future (incorrectly treated as if they're discord-custom ones), due to renames or new additions, that script can be used to update the list of them easily.
Gateway websocket can use zlib compression (and zstd in non-browser apps), which makes inspecting protocol in browser devtools a bit inconvenient.
gw-ws-har-decode.py helper script in this repo can be used to decompress/decode websocket messages saved from chromium-engine browser devtools (pass -h/--help option for info on how to do it).
Run ./rdircd --test for info on some extra development/testing helper commands.
dev-cmds = yes under [debug] also enables some runtime helpers in #rdircd.control.
Adding support for initiating private chats might be a bad idea, as Cordless dev apparently got banned for that, and since these seem to be main spam vector, so more monitoring and anomaly detection is likely done there, leading to potentially higher risk for users.