尝试制作排行榜命令并收到此错误 TypeError: Cannot read property 'split' of undefined
Posted
技术标签:
【中文标题】尝试制作排行榜命令并收到此错误 TypeError: Cannot read property \'split\' of undefined【英文标题】:trying to make a leaderboard command and got this error TypeError: Cannot read property 'split' of undefined尝试制作排行榜命令并收到此错误 TypeError: Cannot read property 'split' of undefined 【发布时间】:2021-07-28 06:12:41 【问题描述】:const MessageEmbed = require('discord.js');
const fs = require('fs');
const db = require('quick.db');
const bot = ('Discord.Client')
module.exports =
name: 'leaderboard',
description: "idk something",
execute(message, args)
let money = db.all().filter(data => data.ID.startsWith(`money_`)).sort((a, b) => b.data - a.data);
console.log(money)
if (!money.length)
let noEmbed = new MessageEmbed()
.setAuthor(message.member.displayName, message.author.displayAvatarURL())
.setColor("BLUE")
.setFooter("No leaderboard")
return message.channel.send(noEmbed)
;
money.length = 10;
var finalLb = "";
for (var i in money)
let currency1;
let fetched = db.fetch(`money_$message.guild.id`);
if (fetched == null)
currency1 = '????'
else
currency1 = fetched
if (money[i].data === null) money[i].data = 0
finalLb += `**$money.indexOf(money[i]) + 1.$message.guild.members.fetch(money.ID.split('_')[1]) ? message.guild.members.fetch(money.ID.split('_')[1]).tag : ""** - $money.data $currency1\n`;
;
const embed = new MessageEmbed()
.setTitle(message.guild.name)
.setColor("BLUE")
.setDescription(finalLb)
.setTimestamp()
.setFooter('Command: !help for currency commands')
message.channel.send(embed);
尝试创建排行榜命令并收到此错误 TypeError: Cannot read property 'split' of undefined。我一直在寻找答案,但到目前为止,我还没有看到任何特定于我的情况的东西。谁能帮忙?
【问题讨论】:
“未定义”表示方法扩展的属性未定义。在这种情况下,money.ID
返回 undefined。
【参考方案1】:
您似乎在函数中进行了很多异步调用。可能发生的情况是您调用 split 函数的字符串值不存在,因为来自服务器的数据尚未到达客户端。
要解决此问题,请在函数名称(执行)之前添加关键字“async”,并在对 db 的所有函数调用之前添加关键字“await”
async execute(message, args)
...
和
let money = await db.all().filter(data => data.ID.startsWith(`money_`)).sort((a, b) => b.data - a.data);
let fetched = await db.fetch(`money_$message.guild.id`);
我还建议您阅读 javascript 中的异步函数
【讨论】:
谢谢,试试这个 不幸的是,它没有改变任何东西。以上是关于尝试制作排行榜命令并收到此错误 TypeError: Cannot read property 'split' of undefined的主要内容,如果未能解决你的问题,请参考以下文章
尝试创建关卡排行榜时,Leaderboard.map 不是函数
我正在尝试定义 LSTM 并收到错误“TypeError: add() missing 1 required positional argument: 'layer'”
我收到“TypeError:'list' object is not callable”。如何修复此错误? [复制]