Javascript 如何使用Discord.js限制或授予对Discord bot的访问权限?

Javascript 如何使用Discord.js限制或授予对Discord bot的访问权限?,javascript,bots,discord,discord.js,Javascript,Bots,Discord,Discord.js,我最近制作了一个经济型机器人,它可以让用户购买服务器上其他机器人(memes机器人、音乐机器人……)的访问权限。这个想法是,如果你不购买访问权限,你将无法使用机器人,但一旦你购买了它,你将能够使用它。我是否可以使用Discord.js限制或授予对Discord机器人程序的访问权限?谢谢 我还没有尝试过任何东西,因为我不知道该做什么 if (message.content.toLowerCase().startsWith(prefix + "buy")) { if (args[0] == "b

我最近制作了一个经济型机器人,它可以让用户购买服务器上其他机器人(memes机器人、音乐机器人……)的访问权限。这个想法是,如果你不购买访问权限,你将无法使用机器人,但一旦你购买了它,你将能够使用它。我是否可以使用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,他的前缀是
。 我正在使用as
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");
      }
    }
  }
然后在事件
消息
上,您需要验证是否有人可以访问

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")
}
}
让我们想象一下,您想出售另一个具有前缀的机器人访问

(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");
      }
    }
  }

在我看来,你可以用几种方法来做,但对我来说,最合理的方法是使用前缀。 假设你有dynobot,他的前缀是
。 我正在使用as
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");
      }
    }
  }
然后在事件
消息
上,您需要验证是否有人可以访问

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")
}
}
让我们想象一下,您想出售另一个具有前缀的机器人访问

(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");
      }
    }
  }

如果其他机器人不是由您制作的,我的最佳建议是锁定该机器人,使其仅在特定渠道中可用,然后让您的经济型机器人为购买该机器人的用户解锁所述渠道。

如果其他机器人不是由您制作的,我的最佳建议是锁定该机器人,使其仅在特定渠道中可用,然后让您的经济型机器人为购买机器人的用户解锁所述频道。

我认为使用机器人的“允许角色”功能会更容易,然后允许用户购买所述角色。

我认为使用机器人的“允许角色”功能会更容易,然后允许用户购买所述角色。

,欢迎来到堆栈溢出。在这个论坛上,你的问题似乎有点太宽泛了。此外,我怀疑对discord机器人收费是否符合discord服务条款。如果您有一个与API或JS相关的特定问题,请尝试修改您的问题,使其更具体。@danielson317我同意您的说法,但是销售Discord bots(作为高级程序的一部分限制访问)并不反对ToS。但是你不知道,所以我只是通知你!(此外,似乎没有任何实际的货币交易,这似乎是作为一种经济系统的所有虚拟货币)只是想澄清一下,是否有这样的想法,即bot已经在服务器上,只有拥有“购买权限”的用户才有权执行命令?如果是这样,您可以将角色分配给用户,并且在执行命令之前,您可以检查用户是否具有指定的roleHowdy,并欢迎使用堆栈溢出。在这个论坛上,你的问题似乎有点太宽泛了。此外,我怀疑对discord机器人收费是否符合discord服务条款。如果您有一个与API或JS相关的特定问题,请尝试修改您的问题,使其更具体。@danielson317我同意您的说法,但是销售Discord bots(作为高级程序的一部分限制访问)并不反对ToS。但是你不知道,所以我只是通知你!(此外,似乎没有任何实际的货币交易,这似乎是作为一种经济系统的所有虚拟货币)只是想澄清一下,是否有这样的想法,即bot已经在服务器上,只有拥有“购买权限”的用户才有权执行命令?如果是这样,您可以将角色分配给用户,在执行命令之前,您可以检查用户是否具有指定的角色It只会告诉用户不允许他使用该机器人,但无法阻止用户使用它们。It只会告诉用户不允许他使用该机器人,但是没有办法阻止用户使用它们。这能回答问题吗?这能回答问题吗?