如何添加一种方法来检查某人是不是已经在部落中/或者他们是不是是 Discord 中的部落所有者 - Discord.JS
Posted
技术标签:
【中文标题】如何添加一种方法来检查某人是不是已经在部落中/或者他们是不是是 Discord 中的部落所有者 - Discord.JS【英文标题】:How do I add a way to check if someone is Already in clan/or if they are clan owner in Discord - Discord.JS如何添加一种方法来检查某人是否已经在部落中/或者他们是否是 Discord 中的部落所有者 - Discord.JS 【发布时间】:2020-05-07 01:48:55 【问题描述】:我正在使用 Discord.js 在 Discord Bot 上制作氏族系统。
我遇到的问题是我正在尝试创建一个函数来检查用户是否已经在一个氏族中,或者氏族所有者是否在他们已经在一个氏族中时尝试创建另一个氏族。如果已经存在相同的名称,我目前能够阻止用户创建另一个氏族:
if (clans) return message.channel.send(`**NateBot |** **Error Whilst Creating Clan** ❌\n\n*The Clan with the name **\`$name\`** already exists!*`);
但是要检查是否有人已经在氏族中试图创建一个氏族,或者如果他们已经在一个氏族中,则所有者正在尝试创建一个氏族。
if (!clans) return message.channel.send(`**NateBot |** **You are already in a Clan silly!** ❌\n\n*Possible reasons are because you're either the Owner of this clan or you are a member of the existing clan you joined.*`);
完整代码: createclan.js
const Discord = require('discord.js');
const db = require(`quick.db`)
const moment = require("moment");
exports.run = async (client, message, args, color) =>
let name = args.splice(0).join(" ")
if (!name) return message.channel.send("**NateBot |** You must specify a Clan Name ")
if (message.author.bot) return message.channel.send(`**NateBot |** **Bots cannot use the Clans System!**`)
let clanowner = message.author.username
let clanownerid = message.author.id
let clanowneravatar = message.author.displayAvatarURL
let clanownertag = message.author.tag
//Other
let names = name
let date = moment().format('MMMM Do YYYY, h:mm:ss a')
let clans = await db.fetch(`customclans_$name`)
if (clans) return message.channel.send(`**NateBot |** **Error Whilst Creating Clan** ❌\n\n*The Clan with the name **\`$name\`** already exists!*`);
if (!clans) return message.channel.send(`**NateBot |** **You are already in a Clan!** ❌\n\n*Possible reasons are because you're either the Owner of this clan or you are a member of the existing clan you joined.*`);
db.set(`customclans_$name.name`, names) // Name of Clan
db.set(`customclans_$name.clanowner`, clanowner) // Owner of Clan
db.set(`customclans_$name.clanownerid`, clanownerid) // Owner ID of Clan
db.set(`customclans_$name.clanownertag`, clanownertag) // Owner ID of Clan
db.set(`customclans_$name.clanowneravatar`, clanowneravatar) // Owner Avatar of Clan user.tag
db.set(`customclans_$name.date`, date) //Date clan was created
let embed = new Discord.RichEmbed()
.setTitle(`**Custom Clans**`)
.setDescription(`**You created a Clan!** ✅\n\n**Tag Name »** $name\n*View your clan with **n!claninfo***`)
.setColor(`#39db69`)
.setFooter(`Note: Clans are Global across servers.`)
message.channel.send(embed)
exports.conf =
aliases: ['setbio'],
cooldown: "10"
exports.help =
name: "setinfo",
description: "Set your info then tell your friends about you",
usage: "setinfo <text>"
我已经尝试了这些方法,但无济于事。在此处寻求有关如何解决此问题的帮助。谢谢。
【问题讨论】:
【参考方案1】:据我了解,使用类似的数据结构是不可能的。创建氏族时,尝试将其 ID 写入另一个表并检查。据我从quick.db
文档中了解到,它不允许您进行复杂的数据库选择。如果你打算使用一些复杂的结构,这个数据库将不是最好的选择。最好使用 mysql 或 MongoDB 的 mongoose 模块来处理不和谐。使用和调整数据库数据将更加复杂。虽然 mongo 有一个相当友好的界面,这将允许你做一些更复杂的检查。
【讨论】:
这是我能够让数据库正确存储数据的唯一方法之一,如果我只是执行 db.set(customclans_$name
, clanowneravatar`) 数据将被不正确地存储。下面是一个例子:imgur.com/a/qOyJ5tQ 我对 quick.db 非常有经验。我知道它是如何工作的,因此,用 quick.db 制作一个氏族系统是非常有可能的,并且会很好地工作。我所遇到的问题是让它检查是否有人已经在试图建立一个部落的部落中,或者如果他们已经在一个部落中,所有者是否正在尝试建立一个部落。
github.com/NTMNathan/servertagsbot 是示例,基于我的 ServerTags Bot 在 Clans 上工作
我在 quick.db 文档中没有看到可以对数据字段使用选择,因此在您的方法中无法进行此检查。
是的,好吧。我可以试试你之前解释的 id 方法,看看效果如何。部落的名称有点像代表部落 id,所以我可以尝试例如:db.set(customclans_$clanidnumber-$name.clanownerid
, clanownerid)以上是关于如何添加一种方法来检查某人是不是已经在部落中/或者他们是不是是 Discord 中的部落所有者 - Discord.JS的主要内容,如果未能解决你的问题,请参考以下文章
MTK 平台上如何给 camera 添加一种 preview size