Discord.js Проблема с клиентом

#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) => {...})