Discord. js в Express RESTful API - PullRequest
       14

Discord. js в Express RESTful API

0 голосов
/ 22 марта 2020

Я пытаюсь использовать библиотеку Discord. js в Express RESTful API. Мне интересно, как я должен разделять клиента между контроллерами, потому что клиент инициализируется асинхронно и, очевидно, плохая практика - вызывать 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() асинхронный, но может только Если один раз вызвать , я не могу импортировать этот файл, если предположить, что бот уже инициализирован. Любые идеи о том, как я должен структурировать этот модуль так, чтобы я мог импортировать его несколько раз с предположением, что он уже был инициализирован?

1 Ответ

0 голосов
/ 22 марта 2020

Вход клиента # асинхронный, но он не возвращает экземпляр 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
}
...