簡體   English   中英

使用 quick.db 設置描述

[英]Setting a description with quick.db

在我的 discord 機器人中,我希望所有用戶都有一個可自定義的配置文件。 每當他們運行命令,配置文件或,p。 該機器人將顯示一個嵌入生物(就像“Hello World”之類的介紹)、他們選擇的自定義嵌入顏色和其他數據庫信息(即硬幣、能量等),我想確保無論何時他們運行類似,desc Hello World。 他們的個人資料嵌入將包含消息 Hello World。 如果他們再次運行.desc Lorem。 他們的自定義嵌入的生物將被編輯為 Lorem 等等。 我使用 quick.db 用簡單的 db.get 和 db.set function 實現了它們,但問題是每當用戶使用多個 arguments (如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);
  },
};

您正在使用arguments.join('')來獲取描述,它將用空字符串連接兩個字符串:

 const message = ['Hello', 'World']; console.log(message.join('')); // no spaces console.log(message.join(' ')); // instead, join by a space!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM