4 个版本
0.0.5 | 2023年11月2日 |
---|---|
0.0.4 | 2023年10月26日 |
0.0.3 | 2023年10月22日 |
0.0.2 | 2023年10月20日 |
0.0.1 |
|
#1915 in Web 编程
每月下载量 47
22KB
440 行
Discord Interaction
一个轻量级、易于使用的库,用于在 Discord 交互模态下构建 Discord 机器人。与 AWS Lambda 集成。
大多数 Discord 机器人的行为可以使用请求/响应模型来描述,其中将斜杠命令、按钮点击或其他用户交互发送到后端,后端返回单个响应。Discord 将这种请求/响应称为 交互,并在 Discord 开发者文档中详细说明了。此库封装了这些请求和响应类型,处理身份验证,公开应用程序友好的类型,并将这些类型与 AWS Lambda 集成。要创建 Lambda 端点程序,您需要一个机器人公钥,一个 InteractionHandler
特性的实现,并使用该实现调用 run
函数。以下是一个示例,取自 demos/hello_world
use discord_interaction::{run, ApplicationCommand, InteractionHandler, Message, Response};
use lambda_http::Error;
const APPLICATION_PUBLIC_KEY: &str = env!("DEMO_PUBLIC_KEY");
#[tokio::main]
async fn main() -> Result<(), Error> {
run::<DemoHandler>(APPLICATION_PUBLIC_KEY).await
}
struct DemoHandler;
impl InteractionHandler for DemoHandler {
fn handle_application_command(ac: ApplicationCommand) -> Response {
let text_content = format!("Hello <@{}>!", ac.user_id);
Response::Message(
Message::new().text(&text_content))
}
}
然后,可以使用 cargo lambda build 和 cargo lambda deploy 命令将该程序部署到 AWS Lambda。Lambda 创建后,您可以创建一个 Discord 应用程序 并将您的应用程序交互端点 URL 注册到连接到 Lambda 的网关。此外,您还应注册您的机器人将使用的 应用程序命令。有关交互端点程序示例以及它们的部署和应用程序命令设置的脚本,请参阅 demos/
文件夹中的源代码和部署脚本。
值得注意的是,lambda(也称为无服务器)部署确实限制了机器人的功能。由于我们每个交互仅限于请求/响应对,我们的应用无法执行需要更长时间存活的事情,例如流音乐。但权衡之下,lambda易于部署,成本极低,在处理并发方面表现良好。
依赖项
~13–25MB
~442K SLoC