您如何获得使用翻译 API 并在每次启动到服务器时都需要 Powershell 命令的 Discord 机器人?

Posted

技术标签:

【中文标题】您如何获得使用翻译 API 并在每次启动到服务器时都需要 Powershell 命令的 Discord 机器人?【英文标题】:How Do You Get a Discord Bot That Uses The Translation API And Requires a Powershell Command At Each Initiation onto a Server? 【发布时间】:2019-11-07 21:28:33 【问题描述】:

我正在创建一个 Discord 机器人,我决定使用 Google Translation API 让机器人根据请求在不同语言之间翻译文本。

但是,在每次启动机器人时,我都需要为 Discord 机器人运行 Powershell 命令才能启用翻译功能。没有,命令不起作用。

命令如下:$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"

这会将机器人指向 Google Translate API 项目的服务密钥。

完整文档在这里:Documentation

如果我打算只在我的机器上运行它,这将完美运行,但我想在服务器上 24/7 运行它,并且我已经设置了 Heroku。

我将如何在服务器上进行设置,因为目前我不知道。

我们将不胜感激。

谢谢。

【问题讨论】:

【参考方案1】:

您使用的命令是声明一个环境变量。

Node.js 你可以按照here的回答来做:

GOOGLE_APPLICATION_CREDENTIALS="/absolute/path/to/key.json" node index.js

Heroku 您也可以直接在 Heroku (documentation) 上设置 env var:

heroku config:set GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/key.json

Docker 或者,您可以创建 Docker 映像或使用 Heroku 构建它并在 Docker 中设置环境变量。

Heroku Docker 和 Docker env file / Docker compose env var

【讨论】:

虽然提供的链接可能会回答问题,但最好提取重要部分并参考链接。如果 URL 无效,此答案的一部分将不再有用。 @slothiful 我同意。但我没有开发 Docker,因为它的使用方式将取决于您将如何使用 Docker。此外,我提到 Docker 是因为它可以帮助解决问题,还因为它可以很好地使用。如果问题是关于 Docker / OP 提到他使用它,我会一直详细说明设置 env var / 解决 Docker 的问题。但我再次同意。您认为需要更多关于节点或heroku 部分的详细信息吗? 在我看来,已经有足够的细节来帮助未来的读者。只要您的回答不只是一个链接说“请看这里”,通常就可以。 嗨,我已经在 Heroku 中使用了你的第二种方法,并让机器人在启动时实际上不会崩溃。但是,现在,机器人在尝试启动时总是会抛出错误。该机器人可以工作,但即使语言代码有效,它也会在其所在的 Discord 频道中引发错误。“语言代码无效!语言代码位于 cloud.google.com/translate/docs/languages !”我检查了代码,它与我本地机器上的版本完全相同。这是为什么呢? 我知道这可能听起来很愚蠢(我还在学习),但我不知道在线服务的绝对路径是什么。不过我会调查的。

以上是关于您如何获得使用翻译 API 并在每次启动到服务器时都需要 Powershell 命令的 Discord 机器人?的主要内容,如果未能解决你的问题,请参考以下文章

C# 向用户询问服务器名称并在每次运行应用程序时保存

每次在android中解析json更好吗

在 GDB 中翻译运行时地址

节点js停止处理来自角度的多个api请求并在重新启动节点应用程序后工作

超时会话的时间

在 Java 企业应用程序中使用翻译映射时,如何获得良好的编码风格和易于维护?