簡體   English   中英

運行獲取時:TypeError:無法讀取未定義的屬性(讀取“發送”)

[英]When running getting: TypeError: Cannot read properties of undefined (reading 'send')

運行代碼時出現此錯誤,我的研究表明它的發送不可用或未定義,我不完全理解它或如何修復它。

編碼:

const { SlashCommandBuilder } = require('@discordjs/builders');
const { Client, Collection, Intents, MessageEmbed } = require('discord.js');

const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MEMBERS] })

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

const channel = client.channels.cache.get('997960087249371136');

do {
  sleep(1000)
  let number = Math.floor(Math.random() * 5);
  
  if(number = 1) {

    channel.send("Carrier under attack!")
    
  } else if(number = 2) {

    channel.send("Carrier leak detected in lower quaters!")
    
  } else if(number = 3) {

    channel.send("All is quiet, for now.")
    
  } else if(number = 4) {

    channel.send("Unidentified aircraft entering our airspace!")
    
  } else {
    console.log("The impossible is possible!")
  } 
}
while(true);

我知道渠道確實存在。

您剛剛創建了客戶端,尚未使用令牌登錄,這就是為什么“client.channels.cache”為空且尚不包含任何通道的原因。 要解決此問題,您必須將所有內容都放在“就緒”事件中

您的代碼還有其他一些問題:

  1. 您必須異步/等待“睡眠”功能,否則它沒用
  2. 在 if 條件下,您必須檢查 === 或 ==,而不是 = 在這里查看原因
  3. 1000 太短(1000 毫秒是 1 秒)發布 1 條消息/秒是 api 請求垃圾郵件。 嘗試改用 4 或 5 秒。
const { SlashCommandBuilder } = require('@discordjs/builders');
const { Client, Collection, Intents, MessageEmbed } = require('discord.js');

const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MEMBERS] })

client.on('ready', async () =>{
  const channel = client.channels.cache.get('997960087249371136');

  do {
    await sleep(1000)
    let number = Math.floor(Math.random() * 5);
  
    if(number == 1) return channel.send("Carrier under attack!")
    else if(number == 2) return channel.send("Carrier leak detected in lower quaters!")
    else if(number == 3) return channel.send("All is quiet, for now.")
    else if(number == 4) return channel.send("Unidentified aircraft entering our airspace!")
    else return channel.send("The impossible is possible!")
  } while(true);
})

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

client.login("YOUR TOKEN")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM