我试图在Express Discord.js API中使用RESTful库。我想知道如何在控制器之间共享客户机,因为客户机是异步初始化的,显然多次调用client.login(...)是错误的做法。换句话说,我有一个异步初始化方法,不能多次调用,我需要跨多个控制器访问这个客户机。我现在要做的是:
discord.helper.js
const Discord = require('discord.js');
const client = new Discord.Client();
client.login(process.env.DISCORD_BOT_TOKEN);
export default client;我的问题是,因为client.login()是异步的,但只能调用一次,所以我不能在假设bot已经初始化的前提下导入这个文件。对于如何构造这个模块,我有什么想法,这样我就可以在已经初始化的前提下多次导入它了吗?
发布于 2020-03-22 11:11:20
Client#login是异步的,但是一旦解决了看这里,它就不会返回Client实例。
您可以放心地假设只要客户机能够登录就可以使用,但是如果可能的话,我会让您的Express服务器接受客户端的一个实例。
import { createServer } from "./server"
import { Client } from "discord.js"
const client = new Client()
const app = startServer(client)
client.login(process.env.DISCORD_BOT_TOKEN)
app.listen(3000, () => {
console.log("Express server is listening on port 3000")
});createServer实例
import express from "express"
export const createServer = client => {
const app = express()
app.get("/", (_, res) => {
res.send(`${client.user.username} says hello`)
})
return app
}https://stackoverflow.com/questions/60793872
复制相似问题