2 回答

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)。

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ì)改變
添加回答
舉報(bào)