public Task _NameTag(FortniteUser usr, SocketGuildUser cuser, string tag)
        {
            return(Task.Run(async() =>
            {
                if (cuser.IsServerOwner())
                {
                    await ReplyEmbedErrorAsync(Translate.GetBotTranslation(BotTranslationString.CanNotUpdateDiscordOwner, GetLanguage(), cuser.Mention));
                    return;
                }
                if (!usr.IsValidName)
                {
                    await ReplyEmbedErrorAsync(Translate.GetBotTranslation(BotTranslationString.FirstlyUseAnotherCmd2, GetLanguage(), cuser.Mention));
                    return;
                }
                var guid = cuser.Guild.Id.ToString();
                var ns = usr.NameStates.FirstOrDefault(p => p.DiscordServerId == guid);
                var pstate = await CheckUserPriority(new TimeSpan(0, 0, 0, 30), usr, cuser, ns);
                if (pstate.Value == null)
                {
                    return;
                }

                if (string.Equals(tag, "right", StringComparison.InvariantCultureIgnoreCase) || string.Equals(tag, "sağ", StringComparison.InvariantCultureIgnoreCase))
                {
                    usr.NameTag = true;
                }
                else if (string.Equals(tag, "left", StringComparison.InvariantCultureIgnoreCase) || string.Equals(tag, "sol", StringComparison.InvariantCultureIgnoreCase))
                {
                    usr.NameTag = false;
                }
                else
                {
                    await ReplyEmbedErrorAsync("unknown parameter please write **f.name.tag left** or **f.name.tag right**");
                    return;
                }
                Context.Repo.Db <FortniteUser>().Update(usr);
                Context.Repo.Commit();
                string newPowerName = null;
                if (usr.GameUserMode == GameUserMode.PVE)
                {
                    newPowerName = Context.Repo.ModifyPVETag(Context.PlayerName, Context.AccountPowerLevel, usr.NameTag, Context.GuildConfig.Owner.PVEDecimalState, false);
                }
                else
                {
                    newPowerName = Context.Repo.ModifyPVPTag(Context.PlayerName, Context.TotalPVPRankedWins, usr.NameTag, false);
                }
                var msg = await ReplyEmbedAsync("**Name Tag is successfully changed.**");
                if (!ns.LockName)
                {
                    await cuser.ModifyAsync((o) =>
                    {
                        o.Nickname = newPowerName;
                    });
                }
                else
                {
                    await msg.SetLockAsync();
                }
            }));
        }
예제 #2
0
        public int SP_TABLE_FortniteUser_Update(FortniteUser user)
        {
            var Id = new SqlParameter("@Id", user.Id)
            {
                Size      = 20,
                SqlDbType = System.Data.SqlDbType.NVarChar
            };
            var EpicId = new SqlParameter("@EpicId", user.EpicId)
            {
                Size       = 50,
                SqlDbType  = System.Data.SqlDbType.NVarChar,
                IsNullable = true,
            };

            if (user.EpicId == null)
            {
                EpicId.Value = DBNull.Value;
            }

            var NameTag      = new SqlParameter("@NameTag", user.NameTag);
            var IsValidName  = new SqlParameter("@IsValidName", user.IsValidName);
            var GameUserMode = new SqlParameter("@GameUserMode", user.GameUserMode);

            return(CallStoredProcedure("dbo.SP_TABLE_FortniteUser_Update @Id, @EpicId, @NameTag, @IsValidName, @GameUserMode",
                                       Id, EpicId, NameTag, IsValidName, GameUserMode));
        }
        public async Task <bool> SetNewNameViaMode <T>(IGuildUser cuser, FortniteUser usr, IUserMessage msg, IFortniteProfile classPveOrPvp, bool updateFromMyDb = false) where T : class
        {
            var ns = usr.NameStates.First(f => f.DiscordServerId == cuser.Guild.Id.ToString());

            if (usr.GameUserMode == GameUserMode.PVE)
            {
                if (!updateFromMyDb)
                {
                    var mapUser = await Api.GetPVEProfileById(usr.EpicId);

                    if (mapUser.Value != null)
                    {
                        return(await Context.Repo.UpdateDatabasePVEProfileAsync(mapUser, cuser, msg, usr.NameTag, ns.LockName, Context.GuildConfig.Owner.PVEDecimalState));
                    }
                }
                else
                {
                    Context.Repo.Db <FortniteUser>()
                    .Update(usr);
                    Context.Repo.Commit();
                    var pveTable = (FortnitePVEProfile)classPveOrPvp;
                    return(await Context.Repo.UpdateDiscordPVEProfileAsync(pveTable, usr.NameTag, cuser, msg, ns.LockName, Context.GuildConfig.Owner.PVEDecimalState));
                }
                await msg.SetErrorAsync();

                return(false);
            }
            else if (usr.GameUserMode == GameUserMode.PVP_WIN_ALL)
            {
                if (!updateFromMyDb)
                {
                    var mapUser = await Api.GetPVPProfileById(usr.EpicId);

                    if (mapUser.Value != null)
                    {
                        if (mapUser.Value.IsPrivate)
                        {
                            msg = await ReplyEmbedAsync(ToTranslate(BotTranslationString.PvpProfilIsNotPublic, GetLanguage(), cuser.Mention));
                        }
                        return(await Context.Repo.UpdateDatabasePVPProfileAsync(mapUser, cuser, msg, usr.NameTag, ns.LockName));
                    }
                }
                else
                {
                    Context.Repo.Db <FortniteUser>()
                    .Update(usr);
                    Context.Repo.Commit();
                    var pvpTable = (FortnitePVPProfile)classPveOrPvp;
                    return(await Context.Repo.UpdateDiscordPVPProfileAsync(pvpTable, usr.NameTag, cuser, msg, ns.LockName));
                }
                await msg.SetErrorAsync();

                return(false);
            }
            return(false);
        }
        public FortniteUser UpdateDatabaseUserProfile(string EpicId, IGuildUser guser, IUserMessage msg = null, bool nameTag = false, GameUserMode gameUserMode = GameUserMode.PVE)
        {
            var mockDiscordUser = new FortniteUser
            {
                Id           = guser.Id.ToString(),
                EpicId       = EpicId,
                NameTag      = nameTag,
                IsValidName  = true,
                GameUserMode = gameUserMode
            };

            StoredProcedure.SP_TABLE_FortniteUser_Update(mockDiscordUser);
            return(mockDiscordUser);
        }
예제 #5
0
 public Task <NameState> AddOrGetNameStateAsync(FortniteUser user, string guildId)
 {
     return(Task.Run(() =>
     {
         var ns = _uow.Db <NameState>().Where(f => f.FortniteUserId == user.Id && f.DiscordServerId == guildId).FirstOrDefault();
         if (ns == null)
         {
             ns = new NameState()
             {
                 DiscordServerId = guildId,
                 FortniteUserId = user.Id
             };
             _uow.Db <NameState>().Add(ns);
             _uow.Commit();
         }
         return ns;
     }));
 }
예제 #6
0
 public Task <FortniteUser> AddOrGetUserAsync(string userId, string guildId, GameUserMode gameUserMode = GameUserMode.PVE)
 {
     return(Task.Run(async() =>
     {
         var nUser = _uow.Db <FortniteUser>().GetById(userId);
         if (nUser == null)
         {
             nUser = new FortniteUser()
             {
                 Id = userId,
                 GameUserMode = gameUserMode,
                 EpicId = null,
             };
             _uow.Db <FortniteUser>().Add(nUser);
             _uow.Commit();
         }
         await AddOrGetNameStateAsync(nUser, guildId);
         return nUser;
     }));
 }
        private Task PullMessage_OnAction(ReadyToVerify arg)
        {
            if (arg.JustDeQueue)
            {
                FriendListApi.DeclineFriendRequest(arg.EpicId).Wait();
                return(Task.CompletedTask);
            }
            var spanTime = DateTimeOffset.UtcNow - arg.Expire;

            if (spanTime.TotalSeconds >= 0 && FriendListApi.IsAuthorized)
            {
                try
                {
                    var          usr     = DiscordApi.GetApi.GetUserAsync(arg.DiscordUserId.ToUlong()).Result;
                    var          channel = (IMessageChannel)DiscordApi.GetApi.GetChannelAsync(arg.ChannelId).Result;
                    IUserMessage msg     = null;
                    try
                    {
                        msg = (IUserMessage)channel.GetMessageAsync(arg.MessageId, options: Core.Utils.RequestOption).Result;
                    }
                    catch (Exception e)
                    {
                        return(Task.CompletedTask);
                    }

                    if (usr != null)
                    {
                        FortniteUser dbAccount = Context.FortniteUsers.Find(arg.DiscordUserId);
                        if (dbAccount == null)
                        {
                            msg?.SetErrorAsync()?.Wait();
                            return(Task.CompletedTask);
                        }

                        var verificationResult = FriendListApi.DeclineFriendRequest(arg.EpicId).Result;
                        if (verificationResult)
                        {
                            if (dbAccount.IsValidName)
                            {
                                dbAccount.VerifiedProfile      = true;
                                dbAccount.LastUpDateTime       = DateTimeOffset.UtcNow;
                                Context.Entry(dbAccount).State = EntityState.Modified;
                                Context.SaveChanges();
                                msg?.SetSuccessAsync()?.Wait();
                            }
                            else
                            {
                                msg?.SetQuestionMarkAsync()?.Wait();
                            }
                        }
                        else
                        {
                            msg?.SetErrorAsync()?.Wait();
                        }
                    }
                    else
                    {
                        msg?.SetErrorAsync()?.Wait();
                    }
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    var verifyFinished = Context.VerifyOrders.Find(arg.EpicId);
                    if (verifyFinished != null)
                    {
                        Context.VerifyOrders.Remove(verifyFinished);
                        Context.SaveChanges();
                    }
                }
            }
            else
            {
                Redis
                .ListLeftPush(QueueName, arg, flags: CommandFlags.FireAndForget);
            }
            return(Task.CompletedTask);
        }
        public async Task <KeyValuePair <bool, PriorityTable> > CheckUserPriority(TimeSpan?requestSecondLimit, FortniteUser usr, IGuildUser cuser, NameState ns = null, DateTimeOffset?lastMassUpdate = null)
        {
            if (!requestSecondLimit.HasValue)
            {
                requestSecondLimit = new TimeSpan(0, 0, 10, 0);
            }
            TimeSpan reminder = DateTimeOffset.UtcNow - usr.LastUpDateTime;

            if (lastMassUpdate.HasValue)
            {
                reminder = DateTimeOffset.UtcNow - lastMassUpdate.Value;
            }
            var pStateResult = Context.Repo.Priority.IsPartnerGuild(cuser.Guild.Id);

            if (pStateResult.Key == false)
            {
                pStateResult = Context.Repo.Priority.IsPartnerUser(cuser.Id);
            }
            if (pStateResult.Key && pStateResult.Value.GetPriorityState() != PriorityState.Normal)
            {
                if (!lastMassUpdate.HasValue)
                {
                    requestSecondLimit = new TimeSpan(0, 0, 0, 1);
                }
            }
            if (reminder.TotalSeconds > requestSecondLimit.Value.TotalSeconds)
            {
                return(pStateResult);
            }
            else
            {
                var ts = requestSecondLimit.Value.Add(new TimeSpan(0, 0, 0, 1)) - reminder;
                await ReplyEmbedErrorAsync(ToTranslate(BotTranslationString.YouHaveToWaitTime1, GetLanguage(), cuser.Mention,
                                                       ts.Hours, ts.Minutes, ts.Seconds));

                return(new KeyValuePair <bool, PriorityTable>(false, null));
            }
        }