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