我最近制作了一个经济型机器人,该机器人应该使用户能够购买服务器中我们拥有的其他机器人(模因机器人,音乐机器人...)。这个想法是,如果您不购买访问权限,将无法使用该机器人,但是一旦购买,便可以使用它。有什么方法可以使用Discord.js限制或授予对Discord机器人的访问权限?谢谢!

由于我不知道要做什么,所以我还没有尝试过任何东西。

if (message.content.toLowerCase().startsWith(prefix + "buy")) {
  if (args[0] == "bot") {
    let balance = eco.FetchBalance(message.author.id).then((result) => {
      if (result.balance >= 1500) {
        eco.SubstractFromBalance(message.author.id, 1500);

        message.channel.send("Bought bot access");

        // Grant bot access
      }
    }
  }
}

最佳答案

在我看来,您可以通过多种方式来执行此操作,但对我而言,最合理的方法是使用前缀。
假设您有dynobot,并且其前缀为#
我正在使用quick.db作为db

(message.content.toLowerCase().startsWith(prefix + "buy")) {
  let access = await db.fetch(`access_${message.author.id}`);
  if (args[0] == "botDyno") {
if(db.has(`access_${message.author.id}.dynobot`)) return message.reply("You already have that access");
 var role = message.guild.roles.find(role => role.name === "AccessToDynoBot");
    let balance = eco.FetchBalance(message.author.id).then((result) => {
      if (result.balance >= 1500) {
        eco.SubstractFromBalance(message.author.id, 1500);
        if(!access){
        message.member.addRole(role);
        db.set(`access_${message.author.id}`, {dynobot: 'yes'})
        }
        else{
        message.member.addRole(role);
        db.push(`access_${message.author.id}`, {dynobot: 'yes'})
        }
        message.channel.send("Bought bot access");
      }
    }
  }


然后在事件message上,您需要验证是否有人可以访问

bot.on('message', async message => {
if(message.content.startsWith("#") && !db.has(`access_${message.author.id}.dynobot`){
return message.reply("Sorry, but you need to buy access")
}
if(message.content.startsWith("!!") && !db.has(`access_${message.author.id}.rythmbot`){
return message.reply("Sorry, but you need to buy access")
}
}


假设您想出售另一个带前缀的bot访问权限!

(message.content.toLowerCase().startsWith(prefix + "buy")) {
  let access = await db.fetch(`access_${message.author.id}`);
  if (args[0] == "botRythm") {
  var role = message.guild.roles.find(role => role.name === "AccessToRythmBot");
  if(db.has(`access_${message.author.id}.rythmbot`)) return message.reply("You already have that access");
    let balance = eco.FetchBalance(message.author.id).then((result) => {
      if (result.balance >= 1500) {
        eco.SubstractFromBalance(message.author.id, 1500);
        if(!access){
        message.member.addRole(role);
        db.set(`access_${message.author.id}`, {rythmbot: 'yes'})
        }
        else{
        message.member.addRole(role);
        db.push(`access_${message.author.id}`, {rythmbot: 'yes'})
        }
        message.channel.send("Bought bot access");
      }
    }
  }

关于javascript - 如何使用Discord.js限制或授予对Discord机器人的访问权限?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57515964/

10-16 19:22