javascript - 如何使用 Discord.js 限制或授予对 Discord 机器人的访问权限?

标签 javascript bots discord discord.js

我最近制作了一个经济机器人,它应该让用户可以购买我们服务器中其他机器人的访问权限(模因机器人、音乐机器人......)。这个想法是,如果您不购买访问权限,您将无法使用该机器人,但一旦购买,您就可以使用它。有什么方法可以使用 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");
      }
    }
  }

然后在事件消息上,您需要验证某人是否具有访问权限

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

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

相关文章:

javascript - 使用 setTimeout 测试 IIFE

python - 使用Python的IRC Bot,需要一个用于2.7.3的简单ping脚本

css - 如何使用 CSS 为不和谐创建透明背景?

javascript - Google Maps Javascript API 不响应 iOS 10 中的触摸事件

javascript - 为什么我得到一个 404 js 文件,同时包含一个脚本标签?

search-engine - 如何阻止恶意的身份不明机器人爬行我的网站?

node.js - 如果在 facebook messenger 平台上发生 EAI_AGAIN 错误,我该如何解决?

node.js - Discord 斜杠命令的交互失败

python - 如何让我的 Python 3.6.1 Discord 机器人在服务器中创建新的文本 channel ?

javascript - 用 javascript 将字符串中的 html 实体替换(LaTeX)命令