使用 quick.db 设置描述

Posted

技术标签:

【中文标题】使用 quick.db 设置描述【英文标题】:Setting a description with quick.db 【发布时间】:2021-07-18 12:17:19 【问题描述】:

在我的 discord bot 中,我希望所有用户都有一个可自定义的配置文件。每当他们运行命令 !profile 或 !p 时,机器人将显示一个嵌入生物(就像“Hello World”之类的介绍)、他们选择的自定义嵌入颜色和其他数据库信息(即硬币、能量等等。) 。我想确保每当他们运行类似 !desc Hello World 之类的东西时,他们的个人资料嵌入将有消息 Hello World,如果他们再次运行 !desc Lorem,他们的自定义嵌入的 bio 将被编辑为 Lorem 等等。我使用 quick.db 用简单的 db.get 和 db.set 函数实现了它们,但问题是每当用户使用多个参数设置描述时,如 Hello World ,它只出现在嵌入作为 HelloWorld 但不是带有空格的实际正确的。我真的希望嵌入能够准确显示用户设置其描述的内容(带有空格和内容),但目前我的代码无法做到这一点。请看一下并指出我应该改变的地方!

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

module.exports = 
  commands: ["description", "desc"],
  minArgs: 1,
  maxArgs: null,
  expectedArgs: ["description to add"],

  callback: (message, arguments, text) => 
    var desc;
    desc = arguments.join("");
    let tester = db.get(`_desc$message.author.id`);

    if (!tester) 
      db.set(`_desc$message.author.id`, desc);
     else 
      db.delete(`_desc$message.author.id`), db.set(`_desc$message.author.id`, desc);
    
    console.log(desc);
  ,
;

上面是 !desc 的代码,下面是 !profile 的代码。

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

module.exports = 
  commands: ["profile", "p"],
  alias: ["p"],
  minArgs: 0,
  maxArgs: null,

  callback: async (message, arguments, text) => 
    let target = message.mentions.members.first() || message.author;

    const balance = db.get(`honey_$target.id`);
    const energy = db.get(`energy_$target.id`);
    var desc = db.get(`_desc$target.id`);
    if (desc === null) 
      let desc = "this user have yet to set a description!";
    

    const embed = new Discord.MessageEmbed()
      .setTitle(`$target.tag's profile`)
      .setColor("#ECB802")
      .addFields(
         name: "Description", value: `$desc`, inline: false ,
        
          name: "cards",
          value: "1",
          inline: true,
          //to do
        ,
         name: "Gym battle record", value: "1/0", inline: true , //to do
        
          name: "Honey",
          value: `$balance :honey_pot:`,
          inline: true,
        ,
        
          name: "energy",
          value: `$energy :dizzy:`,
          inline: true,
        ,
      );

    message.channel.send(embed);
  ,
;

【问题讨论】:

【参考方案1】:

您正在使用arguments.join('') 获取描述,这将连接两个字符串和一个空字符串:

const message = ['Hello', 'World'];

console.log(message.join('')); // no spaces
console.log(message.join(' ')); // instead, join by a space!

【讨论】:

非常感谢!我错过了那个!现在可以了! 很高兴我能帮上忙

以上是关于使用 quick.db 设置描述的主要内容,如果未能解决你的问题,请参考以下文章

使用 quick.db 检查用户是不是有特定对象

使用 Quick.db (Discord.js) 的自动角色问题

有没有办法使用 quick.db 制作 discord.js 日志系统

将用户名存储在 quick.db 数据库中

我似乎无法弄清楚 quick.db

尝试安装“npm quick.db”时出现错误