【问题标题】:elem.startsWith Is Not A Function Discord.jselem.startsWith 不是函数 Discord.js
【发布时间】:2020-11-13 16:22:51
【问题描述】:

我正在尝试使用 quick.db 制作排行榜,我希望它遍历所有变量,并获取所有以 money_${message.guild.id}_ 开头的变量,并返回其余的 var 名称和数量

let list = []

db.all().forEach(elem => {        
  if(elem.startsWith(`money_${message.guild.id}_`)) {
     board.push(list);
  }
});

message.channel.send(list.join("\n"))

我得到的错误是elem.startsWith is not a function

【问题讨论】:

  • 您在代码块中重复了 3 次代码,我猜这是偶然的,而且对于您的描述,不要将每个单词都大写,只对标题这样做。现在编辑了,所以不用担心,但将来请记住它
  • 错误清楚地说明了一切,elem.startsWith 不是函数,这意味着它不是字符串。记录elem 是什么并解决问题,在您的代码部分中也没有您实际推送到list,您只是将list 推送到board

标签: javascript discord.js leaderboard quick.db


【解决方案1】:

我有办法让它工作

const db = require("quick.db");
const Discord = require('discord.js');

module.exports.run = (client, message, args) => {
    var roles = [message.Guild.cache.roles.array()];
    var rolesAmount = roles.length;
  //   
    let mes = [];
  
    for (let i = 0; i < rolesAmount; i++) {
      var amount = db.fetch(`roles_${message.guild.id}_${roles[i].id}`);
  
      if (amount == null) return;
      if (amount == "revoved") return;
  
      mes.push({ name: roles[i].user.username, amount: amount });
    }
  
    mes.sort((a, b) => b.amount - a.amount);

    var realArr = []

    mes.forEach(m => realArr.push(`${m.name} - ${m.amount}`));
    var finalLb = realArr.join("\n")

    let embed = new Discord.MessageEmbed()
    .setTitle(`**${message.guild.name}** LeaderBoard`)
    .setDescription(finalLb)
    .setColor("FFFFFC")

    message.channel.send(embed)
};

【讨论】:

    猜你喜欢
    • 2020-12-31
    • 2020-12-07
    • 2020-08-23
    • 2020-01-22
    • 2017-11-28
    • 2021-06-15
    • 2020-12-22
    • 2021-01-27
    • 2021-06-17
    相关资源
    最近更新 更多