无法向特定频道发送消息

Can't send a message to a specific channel

我正在尝试创建一个 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)
    }
  }
})
// ...
client.login("MYTOKEN")

我正在尝试使用 12.0.0 版本

编辑: 我发现了我的问题,出于某种原因,保存的 ID 是机器人 ID,而不是我的 ID

您正试图通过函数找到它。改用 .find

const channel = client.channels.cache.find(id => id.name == `ticket-${message.author.id}`)

正如 MrMythical 所说,您应该使用 find 函数而不是 get。我认为问题在于您正在获取非文本频道,因为 channel 已定义,您无法向其发送任何内容。

您可以通过添加额外的捕获来解决此问题,以确保您获得的是文本频道,而不是类别或语音频道。如果 channel 未定义,我也会 return (或发出各种错误消息)。

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.