#node.js #express #routes #discord.js #router
#node.js #экспресс #маршруты #discord.js #маршрутизатор
Вопрос:
Сегодня я попытался работать с экспресс-маршрутизатором и discord.js , но возникает ошибка: не удается прочитать свойство ‘channels’ undefined. Я не знаю, в чем проблема. Возможно, я установил неправильный путь. Спасибо за вашу помощь.
//app.js
const express = require('express')
const router = express.Router()
const discord = require('discord.js')
const client = new discord.Client()
router.get('/', (req, res) => {
res.render('register', {
title: 'Register'
})
})
router.get('/Dashboard', (req, res) => {
var chans = []
client.guilds.cache.first().channels.cache
.filter(c => c.type == 'text')
.forEach(c => {
chans.push({ id: c.id, name: c.name })
})
res.render('dashboard', {
title: "Dashboard",
chans,
})
})
router.post('/sendMessage', (req, res) => {
var channelid = req.body.channelid
var text = req.body.text
if (!channelid || !text)
return res.sendStatus(400);
var chan = client.guilds.cache.first().channels.cache.get(channelid)
if (chan) {
chan.send(text)
res.sendStatus(200)
}
else
res.sendStatus(406)
})
module.exports = router
Ответ №1:
Заменить:
var chan = client.guilds.cache.first().channels.cache.get(channelid)
с этим:
var chan = client.guilds.cache.first().channels.cache.fetch(channelid)
Ответ №2:
Чтобы использовать клиент Discord и получить доступ к его каналам, вы должны сначала войти в систему с помощью своего токена
await client.login(token_here)
или
client.login(token_here).then(() => {...})
и Tomedic прав, вы используете сочетание синтаксиса v11 и v12, если вы перечитываете версию v12 discord.js документы вы обнаружите, что можете напрямую получить свой канал, выполнив
let channel = await client.channels.fetch(channel_id)
или
client.channels.fetch(channel_id).then((channel) => {...})