我正在嘗試創建一個 modmail 系統,每當我嘗試制作它時,它都會說“channel.send 不是一個函式,這是我的代碼。”
const Discord = require("discord.js")
const client = new Discord.Client()
const db = require('quick.db')
// ...
client.on('message', message => {
if(db.fetch(`ticket-${message.author.id}`)){
if(message.channel.type == "dm"){
const channel = client.channels.cache.get(id => id.name == `ticket-${message.author.id}`)
channel.send(message.content)
}
}
})
我正在嘗試使用 12.0.0 版 // ... client.login("MYTOKEN")
uj5u.com熱心網友回復:
您正在嘗試使用函式找到它。.find改為使用:
const channel = client.channels.cache.find(id => id.name == `ticket-${message.author.id}`)
uj5u.com熱心網友回復:
正如 MrMythical 所說,您應該使用find函式而不是get. 我相信問題在于您正在獲取非文本頻道,因為channel已定義,您無法向其發送任何內容。
您可以通過添加額外的捕獲來解決此問題,以確保您獲得的是文本頻道,而不是類別或語音頻道。return如果channel未定義,我也會(或執行各種錯誤訊息)。
Discord.js v12:
const channel = client.channels.cache.find(c => c.name === `ticket-${message.author.id}` && c.type === 'text');
Discord.js v13:
const channel = client.channels.cache.find(c => c.name === `ticket-${message.author.id}` && c.type === 'GUILD_TEXT');
編輯:
你可以說channel是定義的,因為如果不是,它會說一些類似的內容:Cannot read property 'send' of undefined。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/371258.html
