第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法讀取未定義的屬性“發(fā)送”:Discord 機(jī)器人創(chuàng)建頻道并向其發(fā)送消息然后對(duì)其做出反應(yīng)

無(wú)法讀取未定義的屬性“發(fā)送”:Discord 機(jī)器人創(chuàng)建頻道并向其發(fā)送消息然后對(duì)其做出反應(yīng)

慕桂英3389331 2022-11-27 16:12:44
我正在嘗試制作一個(gè)機(jī)器人,它將嵌入的消息發(fā)送到一個(gè)頻道,然后對(duì)其做出反應(yīng)。它發(fā)送到的頻道是由 discord 機(jī)器人創(chuàng)建的,所以我沒(méi)有頻道的 ID,只有簡(jiǎn)單的名稱(chēng)island-info-\<user ID>。該頻道在您運(yùn)行命令時(shí)創(chuàng)建,/channel但很快會(huì)在您加入服務(wù)器時(shí)更改為并在您離開(kāi)時(shí)刪除。當(dāng)我運(yùn)行這段代碼時(shí):else if (cmd === `${prefix}channel`){    const name = "island-info-" + message.author.username.toLowerCase();    message.guild.channels.create(name, {        type: 'text',        permissionOverwrites: [        {            id: message.guild.id,             deny: ["VIEW_CHANNEL", "SEND_MESSAGES"]        },        {            id: message.author.id,            allow: ["VIEW_CHANNEL", "ADD_REACTIONS"]        },        ],        parent: "734170209107051074"    })    .catch(console.error);    const Embed = new Discord.MessageEmbed()    .setTitle('ISLAND INFO')    message.guild.channels.cache.find(r => r.name === name).send(Embed)    message.guild.channels.cache.find(r => r.name === name).messages.fetch({ limit: 1 }).then(messages => {        messages.first().react("??")    }).catch(err => {        console.error(err)    })    }它拋出錯(cuò)誤:Cannot read property 'send' of undefined這是因?yàn)?line message.guild.channels.cache.find(r => r.name === name).send(Embed)。有沒(méi)有更好的方法來(lái)做到這一點(diǎn),因?yàn)楫?dāng)我取出cache零件時(shí),它說(shuō)find這不是命令。謝謝?。ň庉嫞┪蚁嘈胚@是因?yàn)樗趧?chuàng)建頻道的同時(shí)或之前將消息發(fā)送到頻道,出于我不知道的原因,有沒(méi)有人知道解決這個(gè)問(wèn)題的方法,因?yàn)楫?dāng)我在之后訪(fǎng)問(wèn)頻道時(shí)最后}一切正常
查看完整描述

2 回答

?
慕碼人2483693

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊

在您嘗試向其發(fā)送消息時(shí),該頻道不存在。


您正在使用.then(),.catch()因此您必須對(duì)承諾有一定的了解。請(qǐng)記住,promise 表示的操作不會(huì)在任何地方完成,除了在 promise 回調(diào)內(nèi)部(或在您使用 之后await)。


基本上你是這樣寫(xiě)的:


//send a request to Discord to make a channel

message.guild.channels.create(name, {...}).catch(console.error);

...

//immediately, without waiting for Discord to make the channel, send a message to it

message.guild.channels.cache.find(r => r.name === name).send(Embed);

您發(fā)送消息的代碼取決于已經(jīng)創(chuàng)建的頻道。因此,它需要在承諾的.then()回調(diào)中。channels.create(...)這還有一個(gè)額外的好處,即 promise 將實(shí)際解析通道對(duì)象,因此您可以調(diào)用.send()它而不需要搜索緩存。


message.guild.channels.create(name, {...}).then(chan => {

  //make embed

  chan.send(Embed);

}).catch(console.error);

您將需要類(lèi)似地附加 a.then()到.send()呼叫以對(duì)剛剛發(fā)送的消息做出反應(yīng)。因?yàn)槟枰却?Discord 真正發(fā)出消息,然后才能對(duì)其做出反應(yīng)。


查看完整回答
反對(duì) 回復(fù) 2022-11-27
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果未定義,則意味著您需要的具有該名稱(chēng)的頻道不存在。我不知道在你的情況下你會(huì)如何處理這個(gè),但這是一個(gè)選擇:


const Embed = new Discord.MessageEmbed()

  .setTitle('ISLAND INFO');

const channel = message.guild.channels.cache.find(r => r.name === name);

if (!channel) message.channel.send("Your channel does not exist!");

else {

  channel.send(embed)

}

按用戶(hù)名存儲(chǔ)數(shù)據(jù)時(shí)要注意的另一件事是用戶(hù)名可以更改。我建議你用用戶(hù) ID 命名你的頻道,因?yàn)檫@些永遠(yuǎn)不會(huì)改變


查看完整回答
反對(duì) 回復(fù) 2022-11-27
  • 2 回答
  • 0 關(guān)注
  • 144 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)