所以我当时在做硬币系统,但是我遇到了一个小问题。
通常,每次输入内容时,我都会得到1个硬币,但是当我使用!coins命令检查我拥有多少个硬币时,我不希望机器人给我硬币。
我希望它在使用此命令时忽略给我硬币。
那我该补充些什么呢?

这是我在index.js中的代码:

if (message.channel.id === "528734148718886922"){
 if(!coins[message.author.id]){
   coins[message.author.id] = {
     coins: 0
   };
 }

 let coinAmt = Math.floor(Math.random() * 1) + 1;
 let baseAmt = Math.floor(Math.random() * 1) + 1;
 console.log(`${coinAmt}; ${baseAmt}`);

 if(coinAmt === baseAmt){
   coins[message.author.id] = {
     coins: coins[message.author.id].coins + coinAmt
   };
   fs.writeFile("./coins.json", JSON.stringify(coins), (err) => {
     if (err) console.log(err)
   });

   let coinEmbed = new Discord.RichEmbed()
   .setAuthor(message.author.username)
   .setColor("#6666ff")
   .addField("💰", `You earned ${coinAmt} Scrap`)

   message.channel.send(coinEmbed).then(message => {message.delete(100000)});

   }
 }


coin.js文件:

const Discord = require("discord.js");
let coins = require("../coins.json");

module.exports.run = async (bot, message, args) =>{
    //coins

    if(!coins[message.author.id]){
        coins[message.author.id] = {
            coins: 0
        };
    }

    let uCoins = coins[message.author.id].coins;

    let coinEmbed = new Discord.RichEmbed()
    .setAuthor(message.author.username)
    .setColor("#6666ff")
    .addField("💰", uCoins);



    message.channel.send(coinEmbed).then(message => {message.delete(50000)});


}

module.exports.help = {
    name: "coins"
}

最佳答案

我猜最简单的方法是将if (message.channel.id === "528734148718886922"){替换为:

if (message.channel.id === "528734148718886922" && message.content !== "!coin"){`


另一种方法(稍微复杂一点,但允许您做更多的事情)是仅在未找到命令的情况下才给硬币。
根据您构建机器人的方式的不同,您可能拥有if(cmd) {if(commandfile)或其他类似方式,然后可以将硬币代码放入else部分,以便仅在没有命令的情况下才提供硬币运行了。

关于javascript - 使用!coins命令时,如何使漫游器忽略给我硬币?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54967380/

10-13 02:20