简介

了解如何使用 Discord 的内置 Webhooks 函数将消息从 AWS Lambda 发送到 Discord 通道。本教程将向您展示如何配置 AWS Lambda 和 Discord Webhook 端点以将消息发送到特定的 Discord 通道。

什么是 AWS Lambda?

  • Lambda 是一种计算服务,让您无需预置或管理服务器即可运行代码。

  • Lambda 仅在需要时运行您的函数并自动扩展,从每天几个请求到每秒数千个请求。

  • 您几乎可以为任何类型的应用程序或后端服务运行代码。

  • 在此处了解有关 AWS Lambda的更多信息

什么是 Discord Webhook?

  • Discord 的内置 Webhook 可作为一种简单的方法来获取发送到服务器文本通道的自动消息和数据更新。在此处了解有关 webhook的更多信息)

  • 提示:Discord 消息具有“速率限制”,这意味着您每秒只能发送特定数量的消息,或者确切地说是请求。您可以在此处了解

入门

本教程假设您熟悉并熟悉使用终端、在没有 GUI 的情况下导航文件系统以及导航 AWS 控制台。要充分利用本教程,请查看下面的先决条件列表。

先决条件:

  • 访问 AWS 账户

  • 访问 Discord 帐户

  • Python 安装在您的系统上

  • 熟悉Python编程

创建 Discord 服务器

我们将首先创建一个 Discord 服务器并使用默认的 Discord 通道来准备传入消息。

如果您已经创建了不和谐服务器并准备好通道,则可以跳过此步骤并跳转到“准备 AWS Lambda 层”部分。

导航到 Discord 网站或打开 Discord 桌面应用程序以访问您的帐户。接下来,通过单击带有大加号的绿色按钮创建一个不和谐服务器。

[立即创建按钮](https://res.cloudinary.com/practicaldev/image/fetch/s--vue842pJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/339ljhnktif0zhgqe0jy.png)

Create a server 窗口中,单击 Create My Own 按钮。

[创建服务器](https://res.cloudinary.com/practicaldev/image/fetch/s--f17ac2DX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/mgfvvmms8f46869mjnx8.png)

在下面的 Tell us more about your server 窗口中,单击 For me and my friends 按钮。

[告诉我们更多](https://res.cloudinary.com/practicaldev/image/fetch/s--qKNpOlYX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/cjoc28l3cfhsmje8bbps.png)

最后,在 Customize your server 窗口中,您可以在 Server Name 字段中更改服务器名称或单击 Create 按钮完成服务器设置。

[自定义你的服务器](https://res.cloudinary.com/practicaldev/image/fetch/s--HY6QoF45--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/l2k5ec44as7hmf01ux8q.png)

创建 Discord Webhook

在此示例中,我将使用默认频道来创建我的 webhook url,但您可以根据需要创建另一个频道。

找到 Edit Channel 按钮,该按钮在 Text Channels 窗格的左侧看起来像一个“齿轮”图标。单击“齿轮”图标以显示设置窗口。

[设置](https://res.cloudinary.com/practicaldev/image/fetch/s--TvZwMz6l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/vj5vp6l8hvgt61kykjch.png)

接下来,单击 Integrations 按钮以显示集成设置。然后点击 Webhooks 按钮打开一个新的 webhooks 窗口。

[创建 webhook](https://res.cloudinary.com/practicaldev/image/fetch/s--kAHxqJIQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/oytwxokd57e4pdn09a0v.png)

您可以保留所有内容,或者如果您有多个频道,请使用下拉菜单选择另一个频道。您也可以利用这段时间更改频道的标题。

[更改 webhook 设置](https://res.cloudinary.com/practicaldev/image/fetch/s--8_7www63--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/21gbaz1v6qd7vkz3f50a.png)

最后,单击 Copy Webhook URL 按钮,将字符串复制到剪贴板。接下来,单击右上角的“X”按钮关闭窗口。

[复制](https://res.cloudinary.com/practicaldev/image/fetch/s--aS54SbJG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/x50qpm1jaqqxj4lwqlcz.png)

就是这样!继续下一部分以配置您的 AWS Lambda。

准备 AWS Lambda 层

要在 AWS Lambda 项目中使用 Python 包,您必须首先将包含所有 Python 包的 zip 文件上传到 AWS Lambda 层。我将在以下几节中向您展示如何设置它。

让我们开始。

创建本地目录

我们只安装了一个名为 discord-webhook 的软件包,以保持我们的项目简单。有关更多代码示例和用法,请访问此处的链接

接下来,创建一个目录/文件夹并给它一个唯一的名称或打开一个终端并键入以下命令,如下所示:

$  mkdir my-project

进入全屏模式 退出全屏模式

下载Python包

对于下一步,您将需要访问终端窗口。如果尚未打开,请打开终端窗口并键入以下命令以更改目录并在当前目录中安装 discord-webhook 包。

$ cd ~/Desktop/my-project && pip3 install -t . discord-webhook

进入全屏模式 退出全屏模式

-t 标志强制 Python 通过“定位”当前工作目录/文件夹将所有包安装在当前文件夹中。在我们的例子中,它是由句点符号 "." 表示的当前目录,位于“-t”之后,“discord-webhook”是我们的 Python 包。

接下来,通过键入以下命令删除不必要的文件,如下所示:

$ rm -r *dist-info __pycache__

进入全屏模式 退出全屏模式

假设您看到如下警告。这只是意味着特定文件夹不存在。某些系统在下载 python 包时包含此文件夹。

rm: __pycache__: No such file or directory

进入全屏模式 退出全屏模式

在撰写本文时,discord-webhook 的当前版本是 0.14.0。

压缩和压缩目录

您可以手动压缩文件夹,也可以通过键入以下命令来使用这个方便的终端命令:

$ zip -r -q ~/Desktop/my-project.zip .

进入全屏模式 退出全屏模式

在云端配置AWS Lambda层

在从 AWS Lambda 控制台启动和执行我们的主程序之前,我们需要设置我们的 AWS Lambda 层,其中包含您之前下载的 Python 包。

创建 AWS Lambda 层

打开 Web 浏览器并登录到您的 Amazon Web Services 控制台。接下来,找到搜索栏,输入“lambda”,然后单击 Lambda 链接以导航 AWS Lambda 函数网页。请参阅下图以获取指导。

[aws lambda 控制台](https://res.cloudinary.com/practicaldev/image/fetch/s--BacBiefj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/fxi6aouqby6njrfq0f9f.png)

在左侧边栏上,找到并单击 Layers 链接以跳转到 Layers 页面。接下来,找到并单击 Create layer 按钮以启动“AWS Lambda Layer”创建过程。请参阅下图以获取指导。

[创建层](https://res.cloudinary.com/practicaldev/image/fetch/s--Se4XrvJ_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/l8wh63v8wut7ob41g8m6.png)

上传压缩文件

使用下面的列表和图片来帮助填写表格。

  1. 名称:Discord-Layer

  2. 描述:为你的图层写描述

  3. 选择:上传 .zip 文件

  4. 上传文件:my-project.zip

  5. 选择架构:x86_64

  6. 选择运行时:Python 3.9

  7. 点击创建按钮

[图层形式](https://res.cloudinary.com/practicaldev/image/fetch/s--HPjAe6Sq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/8zqnixfc35a0aci89hzj.png)

出色的!现在您已准备好创建您的 AWS Lambda 函数!

创建 AWS Lambda 函数

在左侧边栏中,找到并单击 Functions 链接,然后在您的右侧,找到并单击 Create function 按钮;这将打开一个新窗口。

[创建 lambda 函数](https://res.cloudinary.com/practicaldev/image/fetch/s--NMTiXY7a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/9t06clbaxbj4qrv6f0bp.png)

默认情况下,会选择 Author from scratch。保持原样并向下滚动以填写表格。您也可以使用下面的图片来指导您。

  1. 函数名称:Discord-Webhook

  2. 运行时:Python 3.9

  3. 架构:x86_64

  4. 点击创建函数

[lambda 函数形式](https://res.cloudinary.com/practicaldev/image/fetch/s--bzO541iT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/710m8gqqxudmlshiymai.png)

您可以保留其余设置并等待 AWS 函数配置过程完成。

导入Python模块

当您到达 AWS Function 页面时,滚动到页面底部,找到并单击 Add a layer 按钮。

[添加层](https://res.cloudinary.com/practicaldev/image/fetch/s--Jd2hmU33--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/59q54z4d5fcay750zb5l.png)

  1. 图层来源:自定义图层

  2. 自定义层:Discord-Layer

  3. 版本:1

  4. 点击添加

[导入层](https://res.cloudinary.com/practicaldev/image/fetch/s--k-1zXDyl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/ghzd8muaifcpxg0il3hl.png)

配置测试事件

在我们执行 AWS Lambda 函数之前,您需要配置一个测试事件。

[配置事件](https://res.cloudinary.com/practicaldev/image/fetch/s--yx9TCszZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/abzvd5tche4wds0sd6av.png)

  1. 保存的测试事件:MyDiscordEvent

  2. 点击创建按钮

[保存事件](https://res.cloudinary.com/practicaldev/image/fetch/s--7n-XBKS8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev- to-uploads.s3.amazonaws.com/uploads/articles/pe7zwg283qtxbusb3o7p.png)

导入Python模块

现在来看看有趣的东西!

继续将下面的代码复制粘贴到云九文本编辑器中。确保将其替换为您的 Discord 频道 url webhook。

webhook = DiscordWebhook(url="<replace_with_your_hook>")

embed = DiscordEmbed(
    title="Taco Love",
    description="You deserve some taco love today!",
    color="03b2f8")

embed.set_image(url="https://cdn.dribbble.com/users/545781/screenshots/3157610/happy-taco.jpg")
webhook.add_embed(embed)
webhook.execute()

def lambda_handler(event, context):

    return {
        "statusCode": 200,
        "body": {"message": "Hello World"}
    }

进入全屏模式 退出全屏模式

发送不和谐信息

现在,关键时刻!

打开您的不和谐频道,然后单击橙色的测试按钮。

[启动功能](https://res.cloudinary.com/practicaldev/image/fetch/s--MhFNtw5e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/linmx0luctp1gt94iinn.png)

如果一切都正确完成,你应该会看到一个快乐的炸玉米饼!

[快乐炸玉米饼](https://res.cloudinary.com/practicaldev/image/fetch/s--wxbwBw_x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to- uploads.s3.amazonaws.com/uploads/articles/z8taemlh13kkg63edv8k.png)

结论

回顾:

  • 您创建并配置了 AWS Lambda 函数

  • 您创建并配置了 Discord Webhook

  • 使用 Python 编程语言实现了 Discord API

--

如果你已经走到这一步,你。是。惊人的!

有时,使用 AWS 控制台可能会有点令人沮丧和害怕。我希望本教程能让您更有信心和勇气继续追求代码和任何云认证!

直到下一次,

保持好状况!

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐