“fn 不是函数” discord.js

Posted

技术标签:

【中文标题】“fn 不是函数” discord.js【英文标题】:"fn is not a function" discord.js 【发布时间】:2020-08-23 18:56:08 【问题描述】:

最近我在 Discord.js 中遇到了一些问题。我不是专家,如果我问一些愚蠢的问题,请原谅我。这是代码:

let rUser = message.guild.member(message.mentions.users.first() || message.guild.members.cache.get(args[0]));
if(!rUser) return message.channel.send('Couldn\'t find this user!');
let rReason = args.join(' ').slice(22);
if(!rReason) return message.channel.send('Insert a reason');

let reportEmbed = new Discord.MessageEmbed()
.setDescription('**User report**')
.addField('Reported user:', `$rUser.displayName <$rUser.id>`)
.addField(`Reason:`, `$rReason`)
.addField('Reported by:', message.author.username)
.setColor(0xf52c2c);

let rChannel = client.channels.cache.get(707956253040574525)
if(!rChannel) return message.channel.send('Not valid report channel');

rChannel.send(reportEmbed)

它给了我这个错误:TypeError: Cannot read property 'send' of undefined

我正在使用:node.js (6.14.4)、discord.js (12.2.0)、ms (2.1.2)

编辑

解决更新 node.js 和更改

let rChannel = message.guild.channels.cache.find(`name`, 'reports')

let rChannel = message.guild.channels.cache.find(channel => channel.name === 'reports')

“reports”只是机器人发送消息的频道名称

【问题讨论】:

请告诉我错误在哪一行,因为你有更多的 send() 函数。 同上。错误消息非常简单,您要在错误消息中指定的行上检查调用 send 的对象 是的,抱歉,问题出在最后一个字符串 rChannel.send(reportEmbed) @MattTheDragon,你试过 console.log(rChannel) 吗? @szeb 错误信息说 rChannel 没有定义,但是我在字符串let rChannel = client.channels.cache.get(707956253040574525) 中定义了它 我看了一些视频,也看了一些论坛或网站,每个人都使用这个代码,但和我一起它不工作 【参考方案1】:

您需要更新 Node.js。

Discord.js v12 需要 Node.js 12.0.0+。

要更新 Node.js,请在终端中运行以下命令:

npm install -g npm stable

npm install -g node

【讨论】:

我升级了node.js,还是报错,但是这次是“TypeError: fn.bind is not a function”,不知道怎么解决跨度> 你确定它真的升级了吗?你现在的节点版本是多少? 如果我在命令提示符下输入“node -v”,它会告诉我版本是 12.16.2 目前,您如何定义rChannel let rChannel = message.guild.channels.cache.find(`name`, 'reports')

以上是关于“fn 不是函数” discord.js的主要内容,如果未能解决你的问题,请参考以下文章

“fn 不是函数” discord.js

如何解决“TypeError:fn 不是函数”?

jQuery原生框架-----------------事件

事件委托添加与移除