我想知道是否有任何方法可以访问一个。Discord.Client
的实例。
我试过的。
posts.js
const express = require('express')
const router = express.Router()
router.post('/checkRole', function (req, res) {
const guild = client.guilds.find(guild => guild.id === '688678156374044803');
let member = guild.members.get(req.body.id); // member ID
// Here I get an error which says the 'guild' is undefined.
res.send(response);
});
module.exports = router
索引.js
const Discord = require("discord.js");
global.client = new Discord.Client();
const express = require('express');
const postsRoute = require('./routes/posts')
app = express()
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use('/posts', postsRoute)
/* ... some other code ... */
client.login(config.token);
app.listen(8080);
module.exports = { client }
我也试过类似的方法,比如 这个 但也没有成功。最后我试着把客户机实例存储为全局变量,但还是没有成功。有什么方法可以实现这一点吗?
看来问题不在于你不能正确导出客户端,而在于你想使用它的代码在客户端还没有准备好的时候就运行了:事实上,你得到的错误是说没有找到与 .find
方法,但这意味着客户机有了自己的 .guilds
财产和a .find
方法。客户端是存在的,问题是你的代码运行在 ready
事件被触发:为了避免这种情况,你可以要求你的模块内的 ready
事件处理程序。下面是一个例子。
// index.js
client.on('ready', () => {
const postsRoute = require('./routes/posts')
let app = express()
app.use(express.urlencoded({ extended: true }))
app.use(express.json())
app.use('/posts', postsRoute)
app.listen(8080);
})