【问题标题】:"cannot acces 'message' before initialization“在初始化之前无法访问‘消息’
【发布时间】:2021-05-17 05:27:36
【问题描述】:

我的代码出现错误,错误是:

    let channel = message.guild.channels.cache.get(channel.id);
                                                       ^

ReferenceError: Cannot access 'channel' before initialization
    at Client.<anonymous> (C:\Users\dasjo\OneDrive\Desktop\Discord Bot\main.js:15:56)
    at Client.emit (events.js:315:20)
    at MessageCreateAction.handle (C:\Users\dasjo\OneDrive\Desktop\Discord Bot\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\dasjo\OneDrive\Desktop\Discord Bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
scord.js\src\client\websocket\WebSocketManager.js:384:31)
js\src\client\websocket\WebSocketShard.js:444:22)
.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (C:\Users\dasjo\OneDrive\Desktop\Discord Bot\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (C:\Users\dasjo\OneDrive\Desktop\Discord Bot\node_modules\ws\lib\websocket.js:825:20)

我的代码,没有错误看起来像这样:

const Discord = require('discord.js');
const client = new Discord.Client();
const { prefix, token} = require('./config.json');
console.log('charging duh...')
client.once('Loading...', () => {
    console.log('Loading...');
});
client.on('message', message => {
    if (message.content === `${prefix}lol`) {
        for (var i = 0; i < 13000; i++) {
            message.channel.send('<@632899988011220992>')
            
        }
    } else if (message.content === `${prefix}test`) {
        let channel = message.guild.channels.cache.get
        (channel.id);
        channels.forEach( channel => {  channel.delete() })
    }
        
});

client.login(token)

我怎样才能让他们工作? (我想删除服务器中的所有频道。)

linked duplicate 对我不起作用,我收到以下错误:

TypeError: message.guild.channels.forEach is not a function

【问题讨论】:

  • 这能回答你的问题吗? Deleting all channels in a server
  • 不知道为什么它不能回答我的问题,我以前试过,它不起作用
  • “不工作”是什么意思?错误是什么?
  • 错误是:TypeError: message.guild.channels.forEach 不是函数

标签: javascript node.js discord discord.js bots


【解决方案1】:

问题是您想在定义channel 之前访问channel.id。在mdn 上阅读有关此错误的更多信息。

要删除每个频道,您可以使用message.guild.channels.cache.forEach。它将遍历每个通道。

message.guild.channels 是 discord.js v12 中的 ChannelManager。您可以使用.cache 属性来获取频道的缓存。它返回一个collection,因此您可以使用forEach 方法。

client.on('message', (message) => {
  if (message.content === `${prefix}lol`) {
    for (let i = 0; i < 13000; i++) {
      message.channel.send('<@632899988011220992>');
    }
  } else if (message.content === `${prefix}test`) {
    message.guild.channels.cache.forEach((channel) => {
      channel.delete();
    });
  }
});

PS:13000message.channel.send?!

【讨论】:

  • 然后我得到错误:TypeError: message.guild.channels.forEach 不是一个函数。
  • 我的代码中没有message.guild.channels.forEach...
猜你喜欢
  • 2020-12-29
  • 2021-09-10
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-11
  • 1970-01-01
相关资源
最近更新 更多