Matrix 是一款流行的 开源聊天应用程序,可以轻松地与世界各地的人们安全地聊天。 同样,Discord 是一款非开源聊天应用程序,在许多在线社区中也很受欢迎。 Discord 和 Matrix 一样,为所有主要平台(包括移动和桌面平台)提供聊天客户端,因此在 Linux 上完全可用。 然而,它不是开源的,因此,如果有选择,您可能更喜欢使用 Matrix。 好消息是,当出于任何原因没有选择时,您也可以通过运行 Matrix 到 Discord 的桥接器来使用 Matrix 与 Discord 交互。 本文向您展示如何设置和运行 Python Matrix 机器人,以桥接 Matrix 房间和 Discord 频道之间的聊天。
要求
本文演示的机器人是一个“非傀儡式”桥接器,这意味着它只是复制一个平台上的传入和传出消息,并将其发送到另一个平台。 还有更高级的模式可用,但这些模式往往需要自托管的 Matrix 实例。 然而,设置机器人的步骤在两种情况下都很相似,因此,无论您是为自托管的 Matrix 服务器设置桥接服务,还是仅仅为公共实例设置傀儡式机器人,我都假设您至少拥有
-
一个 Matrix 账户和一个 Matrix 客户端,例如 Element。
-
一个 Discord 账户。
-
一台可以运行 Python3 机器人的 Linux 或 BSD 服务器。 我使用一台 Rev. 1 Raspberry Pi,它只有 700mHZ 处理器和 256 MB RAM,运行 NetBSD。 如果您愿意,您可以在本地运行机器人,但我发现将其作为持久服务运行更方便,这样我就不会错过我离开时发生的消息。
获取机器人
下载或克隆 matrix-discord-bridge。
进入其 bridge
目录,并使用 pip 安装其依赖项
$ python3 -m pip install -r requirements.txt
运行机器人以生成一个空的配置文件
$ python3 ./bridge.py
您现在在当前目录中有一个名为 config.json
的文件。 它包含六个键值对。 本文的其余部分演示如何获取这些值,但首先概述一下
前三个用于 Matrix。
-
homeserver:您登录的 Matrix 服务器
-
username:您的 Matrix 登录名
-
password:您的 Matrix 密码
两个用于 Discord
-
token:从 Discord 获取的机器人开发者令牌。
-
discord_cmd_prefix:您想要用作快捷方式的字符序列,用于通过 Discord 发送机器人命令。
最后一个用于两者
-
bridge:您要桥接的 Discord “频道” ID 和 Matrix “房间” ID。 这可以包含多个频道和房间对,因此您可以使用一个机器人来桥接多个房间。
设置 Matrix
您需要做的设置 Matrix 方面的事情是为您的机器人开设一个 Matrix 账户。
接下来,您需要您想要桥接到 Discord 的房间的 ID。 要获取房间 ID,请右键单击 Element 左侧面板中的房间图标,然后选择复制链接。 在您刚刚复制的 URL 中,有一个分号。 房间 ID 是分号左边的部分,该房间的主服务器在右边。 例如,假设这是您刚刚复制的 URL
https://matrix.to/#/!DEADBEEFzzzzABCDEF:matrix.org?via=matrix.org
房间 ID 是 !DEADBEEFzzzzABCDEF
,主服务器是 matrix.org
。
您现在可以将您的 Matrix 详细信息添加到 config.json
文件中。 例如
"homeserver": "https://matrix.org",
"username": "@mybot:matrix.org",
"password": "myBadPassword1234",
"token": "",
"discord_cmd_prefix": "",
"bridge": {
"": "!DEADBEEFzzzzABCDEF:matrix.org"
}
}
获取 Discord 令牌
假设您已经在 Discord 上拥有一个帐户,请打开一个 Web 浏览器并导航到 discordapp.com/developers/applications。 登录后,单击应用程序选项卡中的新建应用程序按钮。
给您的机器人命名。 在此示例中,我使用 mybot
。
定义机器人后,单击它,然后在左侧菜单中找到 Bot 类别。
在 Bot 面板中,单击 Add Bot 按钮。 Discord 会将您的机器人添加到面板中,并在消息框中提醒您“一个野生的机器人出现了!”。 在您的机器人名称下方,有一个链接可以点击以显示您的机器人的令牌。 单击该链接并将令牌复制到您的配置文件中。
"token": "07c63.fb2823cG759.b20_852f337a6551bc",
设置机器人命令
选择您想要使用的字符序列,以便在 Discord 中向机器人发出命令。 在简单桥接的实例中,您可能没有任何需要发出的命令,因此此值可能实际上并不重要。 我将其设置为 !b
,但我从未使用过它。
"discord_cmd_prefix": "!b",
将您的机器人添加到 Discord
现在您必须将您的机器人添加到您想要桥接的频道。
-
从左侧菜单中选择 OAuth2,然后选择 URL Generator。
Seth Kenlon, CC BY-SA 4.0
-
在 Scopes 部分,选择 bot(且仅选择 bot)。 在 Scopes 部分下方出现的 Bot Permissions 部分中,激活 Text Permissions 下的所有选项。
-
复制面板底部 Generated URL 字段中显示的 URL。
导航到您刚刚复制的 URL,并将机器人添加到频道。
最后,在左侧面板中选择 Bot 类别,并启用所有 Privileged Gateway Intents。

(Seth Kenlon, CC BY-SA 4.0)
您已完成 Discord Web 界面,但现在您还需要从 Discord 应用程序中获取一个配置选项。
获取 Discord 频道 ID
在 Discord 的用户设置中(它是桌面应用程序上您姓名旁边的齿轮图标),选择高级。 在高级面板中,激活开发者模式。

Seth Kenlon, CC BY-SA 4.0
在开发者模式激活的情况下,转到您要桥接的频道。 例如,您可能想要将 Matrix 桥接到 example Discord 服务器上的 zombie apocalypse 频道。 首先,加入 example Discord 服务器。 然后右键单击文本频道 #zombie apocalypse,并选择复制 ID。

(Seth Kenlon, CC BY-SA 4.0)
将频道 ID 粘贴到配置文件中,作为 bridge 的第一个值。 您的完整配置文件现在包含
"homeserver": "https://matrix.org",
"username": "@mybot:matrix.org",
"password": "myBadPassword1234",
"token": "07c63.fb2823cG759.b20_852f337a6551bc",
"discord_cmd_prefix": "!b",
"bridge": {
"1030287944604463185": "!DEADBEEFzzzzABCDEF:matrix.org"
}
}
桥接
使用 Python 启动您的机器人
$ python3 ./bridge.py &
您的机器人现在充当桥梁,至少在理论上是这样。 某些 Discord 频道以静音状态启动新用户,他们必须被授予特殊权限才能进行交互。 如果您要桥接的 Discord 频道受到严格管理,那么您可能需要与版主或管理员交谈,并为您的机器人请求特殊权限。
对于您首次尝试进行设置,最简单的方法是将 Discord 服务器桥接到您控制的 Matrix 房间。 这样,您可以确认它在不受限制的情况下工作。 在您确认功能正常后,尝试将其添加到受限频道。
开源弥合了另一个差距
开源做了很多繁重的工作,包括在集成领域。 Matrix 和 Discord 能够提供一个健壮的机器人生态系统,该生态系统易于学习和易于使用,这值得称赞。 一些足智多谋的开源开发者能够将两者桥接起来,这也值得称赞。
1 条评论