예제 #1
0
 public void Update(NFTReqType type, int holdX, int min, int max, string custom = "")
 {
     RequirementType = type;
     HoldXValue      = holdX;
     MinRange        = min;
     MaxRange        = max;
     CustomCall      = custom;
 }
예제 #2
0
 public void Update(ulong gId, ulong rId, string tAd, NFTReqType type, string cName, string tName, int holdX, int min, int max, string custom = "")
 {
     guildId         = gId;
     RoleId          = rId;
     NFTAddress      = tAd;
     RequirementType = type;
     ClaimName       = cName.ToLower();
     TokenName       = tName.ToUpper();
     HoldXValue      = holdX;
     MinRange        = min;
     MaxRange        = max;
     CustomCall      = custom;
 }
예제 #3
0
 public NFTRoleHandler(ulong gId, ulong rId, string tAd, NFTReqType type, string cName, string tName, int holdX, int min, int max, string custom = "")
 {
     id              = ObjectId.GenerateNewId();
     guildId         = gId;
     RoleId          = rId;
     NFTAddress      = tAd;
     RequirementType = type;
     ClaimName       = cName.ToLower();
     TokenName       = tName.ToUpper();
     HoldXValue      = holdX;
     MinRange        = min;
     MaxRange        = max;
     CustomCall      = custom;
 }
예제 #4
0
        public static async Task UpdateRoleHandler(ulong guildId, ulong roleId, NFTReqType type, int holdX, int min, int max, string custom = "")
        {
            var collec = DatabaseConnection.GetDb().GetCollection <NFTRoleHandler>("NFTRoles");
            var role   = (await collec.FindAsync(r => r.RoleId == roleId)).FirstOrDefault();

            if (role == null)
            {
                return;
            }
            else
            {
                role.Update(type, holdX, min, max, custom);
                var update = Builders <NFTRoleHandler> .Update.Set(r => r.RequirementType, role.RequirementType)
                             .Set(r => r.HoldXValue, role.HoldXValue)
                             .Set(r => r.MinRange, role.MinRange)
                             .Set(r => r.MaxRange, role.MaxRange)
                             .Set(r => r.CustomCall, role.CustomCall);;
                await collec.UpdateOneAsync(r => r.RoleId == role.RoleId, update);
            }
        }
예제 #5
0
        public static async Task AddRoleHandler(ulong guildId, ulong roleId, string token, NFTReqType type, string cName, string tName, int holdX, int min, int max, string custom = "")
        {
            var collec = DatabaseConnection.GetDb().GetCollection <NFTRoleHandler>("NFTRoles");
            var role   = (await collec.FindAsync(r => r.RoleId == roleId)).FirstOrDefault();

            if (role == null)
            {
                await collec.InsertOneAsync(new NFTRoleHandler(guildId, roleId, token, type, cName, tName, holdX, min, max, custom));
            }
            else
            {
                role.Update(guildId, roleId, token, type, cName, tName, holdX, min, max, custom);
                await collec.ReplaceOneAsync(r => r.RoleId == roleId, role);
            }
        }
예제 #6
0
        public async Task AddNFTRole(IRole role, params string[] input)
        {
            if (!await IsAdmin())
            {
                return;
            }
            if (Context.Guild == null)
            {
                await ReplyAsync("You must issue this command inside a server!");

                return;
            }
            if (input.Length > 7)
            {
                return;
            }
            var        tokenName  = input[0];
            var        nftAddress = input[1];
            var        reqType    = input[2];
            var        value      = Convert.ToInt32(input[3]);
            var        claimName  = input[input.Length - 1];
            var        inRange    = "";
            var        rangeValue = "";
            NFTReqType type       = NFTReqType.HoldX;
            var        min        = 0;
            var        max        = 0;

            if (reqType.ToLower().StartsWith("hold"))
            {
                type = NFTReqType.HoldX;
            }
            if (input.Length > 5)
            {
                inRange    = input[4];
                rangeValue = input[5];
                if (inRange.ToLower() == "range")
                {
                    if (rangeValue[0] == '[' && rangeValue[rangeValue.Length - 1] == ']')
                    {
                        rangeValue = rangeValue.Substring(1, rangeValue.Length - 2);
                        var arr = rangeValue.Split(';');
                        if (arr.Length == 2 && int.TryParse(arr[0], out min) && int.TryParse(arr[1], out max) && min < max)
                        {
                            type = NFTReqType.InRange;
                        }
                        else
                        {
                            await ReplyAsync("Wrong range format");

                            return;
                        }
                    }
                    else
                    {
                        await ReplyAsync("Wrong range format");

                        return;
                    }
                }
            }
            await NFTRoleHandler.AddRoleHandler(Context.Guild.Id, role.Id, nftAddress, type, claimName, tokenName, value, min, max);

            await Context.Message.AddReactionAsync(new Emoji("✅"));
        }