如何将discord.js / node.js部署到firebase-functions

我想将一个带有discord.js的discord机器人部署到firebase中,但是我无法让de bot在firebase中运行。如果我执行nodemon,它可以完美运行,但是如果我使用firebase部署,它将无法启动该机器人。

const functions = require('firebase-functions');

require('dotenv').config();
const token = process.env.TOKEN

const Discord = require('discord.js')
const Client = new Discord.Client();

Client.on('ready',() => {
    Client.channels.find(x => x.name === 'main-cannel').send('bot is deployed')
    Client.user.setGame(`The Cult | ${Client.guilds.size} servers`)
    Console.log('test')
});

Client.login(token);

//is is not working but de basic
//export.App = functions.... {Client}
exports.app = functions.https.onRequest((request,response) => {
    response.send("Test");
});
saigemarket 回答:如何将discord.js / node.js部署到firebase-functions

client.login(token)放入response.send("Test");所在的位置。这将提示您的漫游器代码在HTTP请求后执行。

https://us-central1-<your project ID>.cloudfunctions.net/app中,将<your project ID>替换为项目的ID。

如果Firebase Hosting为您提供URL example-123.web.app,则您的项目ID为example-123。您还可以通过控制台获取项目ID:打开Firebase控制台,选择项目,单击设置图标,转到“项目设置”,其ID在表格的第二行。

为此,您必须将令牌直接移到代码中。您不能使用.env之类的shell文件。

最后,您的代码将是:

const functions = require('firebase-functions');
const token = 'whatever the token is';
const Discord = require('discord.js')
const Client = new Discord.Client();

Client.on('ready',() => {
    Client.channels.find(x => x.name === 'main-cannel').send('bot is deployed')
    Client.user.setGame(`The Cult | ${Client.guilds.size} servers`)
    Console.log('test')
});

exports.app = functions.https.onRequest((request,response) => {
    response.send("Test"); // Do not delete this! Your request will time out if you do.
    Client.login(token);
});

正如Gabber235所指出的那样,这可能不是最好的Google Cloud Platform服务,您应该使用Compute Engine。

,

这可能不是google云平台服务的最佳组合,因为云功能在设计时并未考虑到这一点。您只需将Discord机器人托管在计算引擎计算机上即可。

如果要使用动态缩放,请查看Discord Microservice Bots,其中DasWolke描述了什么是微服务。嘿,还包括了他的JavaScript代码,以为Discord拆分不同的服务。

具体来说,您可以在Google云平台上执行的操作是创建运行Gateway的VM。这需要运行24/7,并且应该是轻量级的。您可以为此使用f1-micro(免费),尽管Google建议该任务使用g1-small。

网关应过滤您要查找的事件(因为Discord发送了很多事件,您不需要的事件最多),然后将数据发送到cloud functioncloud run(您可以发送数据通过pub/sub)。根据我的经验,云运行的启动时间要短得多,所以我选择了。

在您的函数内部,您将收到所需的数据。如果您需要Discord中的某些功能(发送消息,管理频道等),可以使用SnowTransfer。 SnowTransfer只是不和谐地调用其余的API。

本文链接:https://www.f2er.com/3151909.html

大家都在问