设置 Matrix 到 Discord 机器人

运行 Python Matrix 机器人,以桥接 Matrix 房间和 Discord 频道之间的聊天。
1 位读者喜欢这篇内容。
Chat bubbles

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

现在您必须将您的机器人添加到您想要桥接的频道。

  1. 从左侧菜单中选择 OAuth2,然后选择 URL Generator

    Select URL Generator under the OAuth2 menu item.

    Seth Kenlon, CC BY-SA 4.0

  2. Scopes 部分,选择 bot(且仅选择 bot)。 在 Scopes 部分下方出现的 Bot Permissions 部分中,激活 Text Permissions 下的所有选项。

  3. 复制面板底部 Generated URL 字段中显示的 URL。

导航到您刚刚复制的 URL,并将机器人添加到频道。

最后,在左侧面板中选择 Bot 类别,并启用所有 Privileged Gateway Intents

Enable all privileged gateway intents in the bot category

(Seth Kenlon, CC BY-SA 4.0)

您已完成 Discord Web 界面,但现在您还需要从 Discord 应用程序中获取一个配置选项。

获取 Discord 频道 ID

在 Discord 的用户设置中(它是桌面应用程序上您姓名旁边的齿轮图标),选择高级。 在高级面板中,激活开发者模式

Activate Developer Mode with the toggle switch in the top right corner of the Advanced panel.

Seth Kenlon, CC BY-SA 4.0

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

Get the Discord channel ID from the contextual menu.

(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 能够提供一个健壮的机器人生态系统,该生态系统易于学习和易于使用,这值得称赞。 一些足智多谋的开源开发者能够将两者桥接起来,这也值得称赞。

标签
Seth Kenlon
Seth Kenlon 是一位 UNIX 极客、自由文化倡导者、独立多媒体艺术家和 D&D 爱好者。 他曾在电影和计算行业工作,而且经常同时工作。

1 条评论

很高兴看到这是一个示例设置!! Matrix 桥接生态系统非常复杂,很高兴看到其中一个设置。

另一个应该涵盖的主题(来自 Matrix?)将是傀儡式桥接器和非傀儡式桥接器之间的技术分解。

© . All rights reserved.