Exemple #1
0
 private async void AddWarning(ICommandContext context, IGuildUser userWarned)
 {
     using (var db = new NinjaBotEntities())
     {
         var warnings = db.Warnings.Where(w => w.ServerId == (long)context.Guild.Id && w.UserWarnedId == (long)userWarned.Id).FirstOrDefault();
         if (warnings != null)
         {
             warnings.NumWarnings = warnings.NumWarnings + 1;
         }
         else
         {
             db.Warnings.Add(new Warnings
             {
                 ServerId       = (long)context.Guild.Id,
                 ServerName     = context.Guild.Name,
                 UserWarnedId   = (long)userWarned.Id,
                 UserWarnedName = userWarned.Username,
                 IssuerId       = (long)context.User.Id,
                 IssuerName     = context.User.Username,
                 TimeIssued     = DateTime.Now,
                 NumWarnings    = 1
             });
         }
         await db.SaveChangesAsync();
     }
 }
Exemple #2
0
        public async Task ForceGreetingClear([Remainder] long serverId)
        {
            ServerGreeting greetingInfo = null;

            using (var db = new NinjaBotEntities())
            {
                greetingInfo = db.ServerGreetings.Where(g => g.DiscordGuildId == serverId).FirstOrDefault();
            }
            if (greetingInfo != null)
            {
                try
                {
                    using (var db = new NinjaBotEntities())
                    {
                        db.Remove(db.ServerGreetings.Where(g => g.DiscordGuildId == serverId).FirstOrDefault());
                        await db.SaveChangesAsync();
                    }
                    await _cc.Reply(Context, "Cleared!");
                }
                catch (Exception ex)
                {
                    await _cc.Reply(Context, $"Error clearing greeting -> [{ex.Message}]");
                }
            }
            else
            {
                await _cc.Reply(Context, $"No association found for [{serverId}]!");
            }
        }
Exemple #3
0
        private static async Task LogCommandUsage(SocketCommandContext context, IResult result)
        {
            var request = new Request();

            if (context.Channel is IGuildChannel)
            {
                request.ServerID   = (long)context.Guild.Id;
                request.ServerName = context.Guild.Name;
                System.Console.WriteLine($"+[{System.DateTime.Now.ToString("t")}] User: {context.User.Username} Guild: {context.Guild.Name} -> {context.Message.Content}");
            }
            else
            {
                System.Console.WriteLine($"+[{System.DateTime.Now.ToString("t")}] User: {context.User.Username} -> {context.Message.Content}");
            }
            request.ChannelId   = (long)context.Channel.Id;
            request.ChannelName = context.Channel.Name;
            request.UserId      = (long)context.User.Id;
            request.Command     = context.Message.Content;
            request.UserName    = context.User.Username;
            request.Success     = true;
            request.RequestTime = DateTime.Now;

            string commandIssued = string.Empty;

            if (!result.IsSuccess)
            {
                request.Success       = false;
                request.FailureReason = result.ErrorReason;
            }
            using (var db = new NinjaBotEntities())
            {
                db.Requests.Add(request);
                await db.SaveChangesAsync();
            }
        }
Exemple #4
0
 public async Task AddWoWResource([Remainder] string args = null)
 {
     if (args != null)
     {
         try
         {
             int argCount = args.Split(',').Count();
             if (argCount == 4)
             {
                 using (var db = new NinjaBotEntities())
                 {
                     db.WowResources.Add(new WowResources
                     {
                         ClassName           = args.Split(',')[0].Trim(),
                         Specialization      = args.Split(',')[1].Trim(),
                         Resource            = args.Split(',')[2].Trim(),
                         ResourceDescription = args.Split(',')[3].Trim(),
                     });
                     await db.SaveChangesAsync();
                 }
             }
         }
         catch (Exception ex)
         {
             await _cc.Reply(Context, $"Error adding resource: [{ex.Message}]");
         }
     }
 }
Exemple #5
0
        public async Task GetClassicGuild()
        {
            var             sb              = new StringBuilder();
            var             embed           = new EmbedBuilder();
            WowClassicGuild wowClassicGuild = null;

            embed.Title        = $"[{Context.Guild.Name}] WoW Classic Guild Association";
            embed.ThumbnailUrl = Context.Guild.IconUrl;
            using (var db = new NinjaBotEntities())
            {
                wowClassicGuild = db.WowClassicGuild.Where(g => g.ServerId == (long)Context.Guild.Id).FirstOrDefault();
            }
            if (wowClassicGuild != null)
            {
                sb.AppendLine($"**Guild Name:** {wowClassicGuild.WowGuild}");
                sb.AppendLine($"**Realm:** {wowClassicGuild.WowRealm}");
                sb.AppendLine($"**Region:** {wowClassicGuild.WowRegion}");
            }
            else
            {
                sb.AppendLine($"There is no guild associated to this server!");
                sb.AppendLine("Placeholder for help text");
            }
            embed.WithColor(0, 255, 155);
            embed.Description = sb.ToString();
            await _cc.Reply(Context, embed);
        }
Exemple #6
0
        private static bool CheckGiphyEnabled(ICommandContext context)
        {
            bool   isEnabled  = false;
            string serverName = string.Empty;
            var    guildInfo  = context.Guild;

            if (guildInfo == null)
            {
                serverName = context.User.Username;
            }
            else
            {
                serverName = context.Guild.Name;
            }
            using (var db = new NinjaBotEntities())
            {
                var giphySettings = db.Giphy.FirstOrDefault(g => g.ServerName == serverName);
                if (giphySettings != null)
                {
                    if ((bool)giphySettings.GiphyEnabled)
                    {
                        isEnabled = true;
                    }
                }
            }
            return(isEnabled);
        }
Exemple #7
0
 private async Task WordFinder(SocketMessage messageDetails)
 {
     await Task.Run(async() =>
     {
         var message = messageDetails as SocketUserMessage;
         if (!messageDetails.Author.IsBot)
         {
             List <NinjaBotCore.Database.WordList> serverWordList = null;
             using (var db = new NinjaBotEntities())
             {
                 SocketGuild guild = (message.Channel as SocketGuildChannel)?.Guild;
                 serverWordList    = db.WordList.Where(w => w.ServerId == (long)guild.Id).ToList();
             }
             bool wordFound = false;
             foreach (var singleWord in serverWordList)
             {
                 foreach (var content in messageDetails.Content.ToLower().Split(' '))
                 {
                     if (singleWord.Word.ToLower().Contains(content))
                     {
                         wordFound = true;
                     }
                 }
             }
             if (wordFound)
             {
                 await messageDetails.DeleteAsync();
             }
         }
     });
 }
Exemple #8
0
        public async Task GetLogsClassic()
        {
            var             embed           = new EmbedBuilder();
            var             sb              = new StringBuilder();
            int             maxReturn       = 2;
            WowClassicGuild wowClassicGuild = null;

            using (var db = new NinjaBotEntities())
            {
                wowClassicGuild = db.WowClassicGuild.Where(g => g.ServerId == (long)Context.Guild.Id).FirstOrDefault();
            }
            if (wowClassicGuild != null)
            {
                var guildLogs = await _wclLogsApi.GetReportsFromGuildClassic(wowClassicGuild.WowGuild, wowClassicGuild.WowRealm, wowClassicGuild.WowRegion);

                if (guildLogs.Count > 0)
                {
                    sb.AppendLine();
                    for (int i = 0; i <= (guildLogs.Count) && i <= maxReturn; i++)
                    {
                        sb.AppendLine($"[__**{guildLogs[i].title}** **/** **{guildLogs[i].zoneName}**__]({guildLogs[i].reportURL})");
                        sb.AppendLine($"\t:timer: Start time: **{_wclLogsApi.UnixTimeStampToDateTime(guildLogs[i].start).ToLocalTime()}**");
                        sb.AppendLine($"\t:stopwatch: End time: **{_wclLogsApi.UnixTimeStampToDateTime(guildLogs[i].end).ToLocalTime()}**");
                        sb.AppendLine($"\t:pencil2: Created by [**{guildLogs[i].owner}**]");
                        sb.AppendLine();
                    }
                    _logger.LogInformation($"Sending logs to {Context.Channel.Name}, requested by {Context.User.Username}");
                    embed.Title       = $":1234: __Logs for **{wowClassicGuild.WowGuild}** on **{wowClassicGuild.WowRealm}**__:1234: ";
                    embed.Description = sb.ToString();
                    embed.WithColor(0, 255, 100);
                    await _cc.Reply(Context, embed);
                }
            }
        }
Exemple #9
0
        public string FindAchievements(Character armoryInfo)
        {
            StringBuilder        cheevMessage = new StringBuilder();
            List <FindWowCheeve> findCheeves  = null;
            var completedCheeves = armoryInfo.achievements.achievementsCompleted;

            using (var db = new NinjaBotEntities())
            {
                findCheeves = db.FindWowCheeves.ToList();
            }
            if (findCheeves != null)
            {
                foreach (int achievement in completedCheeves)
                {
                    var findMe = findCheeves.Where(f => f.AchId == achievement).FirstOrDefault();
                    if (findMe != null)
                    {
                        var matchedCheeve = WowApi.Achievements.Where(c => c.id == findMe.AchId).FirstOrDefault();
                        if (matchedCheeve != null)
                        {
                            cheevMessage.AppendLine($":white_check_mark: {matchedCheeve.name}");
                        }
                    }
                }
            }
            return(cheevMessage.ToString());
        }
        private async Task PerformLogCheck(List <LogMonitoring> logWatchList, bool flip, WowClassicGuild guild)
        {
            try
            {
                var watchGuild = logWatchList.Where(w => w.ServerId == guild.ServerId).FirstOrDefault();
                if (watchGuild != null)
                {
                    if (watchGuild.MonitorLogs)
                    {
                        List <Reports> logs = null;

                        logs = await GetReportsFromGuildClassic(guildName : guild.WowGuild, realm : guild.WowRealm.Replace("'", ""), region : guild.WowRegion, isList : true, flip : flip);

                        if (flip)
                        {
                            flip = false;
                        }
                        else
                        {
                            flip = true;
                        }
                        if (logs != null)
                        {
                            var      latestLog = logs[0];
                            DateTime startTime = UnixTimeStampToDateTime(latestLog.start);
                            //System.Console.WriteLine($"local id [{watchGuild.ClassicReportId}] -> remote id [{latestLog.id}] for [{guild.WowGuild}] on [{guild.WowRealm}].");
                            if (latestLog.id != watchGuild.ClassicReportId)
                            {
                                using (var db = new NinjaBotEntities())
                                {
                                    var latestForGuild = db.LogMonitoring.Where(l => l.ServerId == guild.ServerId).FirstOrDefault();
                                    latestForGuild.LatestLogClassic = startTime;
                                    latestForGuild.ClassicReportId  = latestLog.id;
                                    await db.SaveChangesAsync();
                                }
                                ISocketMessageChannel channel = _client.GetChannel((ulong)watchGuild.ChannelId) as ISocketMessageChannel;
                                if (channel != null)
                                {
                                    _logger.LogInformation($"Posting log for [{guild.WowGuild}] on [{guild.WowRealm}] for server [{guild.ServerName}]");
                                    var embed = new EmbedBuilder();
                                    embed.Title = $"New log found for [{guild.WowGuild}]!";
                                    StringBuilder sb = new StringBuilder();
                                    sb.AppendLine($"[__**{latestLog.title}** **/** **{latestLog.zoneName}**__]({latestLog.reportURL})");
                                    sb.AppendLine($"\t:timer: Start time: **{UnixTimeStampToDateTime(latestLog.start).ToLocalTime()}**");
                                    sb.AppendLine($"\t:pencil2: Created by [**{latestLog.owner}**]");
                                    sb.AppendLine();
                                    embed.Description = sb.ToString();
                                    embed.WithColor(new Color(0, 0, 255));
                                    await channel.SendMessageAsync("", false, embed.Build());
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                //_logger.LogError($"Error checking for logs [{guild.WowGuild}]:[{guild.WowRealm}]:[{guild.WowRealm}]! -> [{ex.Message}]");
            }
        }
Exemple #11
0
        public async Task SetLatestRaid(Zones zone)
        {
            var currentTier = new CurrentRaidTier();

            currentTier.WclZoneId = zone.id;
            currentTier.RaidName  = zone.name;

            using (var db = new NinjaBotEntities())
            {
                var curRaid = db.CurrentRaidTier.FirstOrDefault();
                if (curRaid == null)
                {
                    await db.CurrentRaidTier.AddAsync(new CurrentRaidTier
                    {
                        WclZoneId = currentTier.WclZoneId,
                        RaidName  = currentTier.RaidName
                    });
                }
                else
                {
                    curRaid.WclZoneId = currentTier.WclZoneId;
                    curRaid.RaidName  = currentTier.RaidName;
                }

                await db.SaveChangesAsync();
            }
            WarcraftLogs.CurrentRaidTier = currentTier;
        }
 //if (Context.Channel is IDMChannel)
 //{
 //    await ReplyAsync("DM");
 //}
 //else if (Context.Channel is IGuildChannel)
 //{
 //    await ReplyAsync("Channel");
 //}
 public async Task SetGuildBotChannelAsync(ulong channelId, string channelName, ulong userId, string userName, string guildName, ulong guildId)
 {
     await Task.Run(async() =>
     {
         using (var db = new NinjaBotEntities())
         {
             var currentChannel = db.ChannelOutputs.FirstOrDefault(o => o.ServerId == (long)guildId);
             if (currentChannel == null)
             {
                 var createChannel = new ChannelOutput
                 {
                     ChannelId   = (long)channelId,
                     ChannelName = channelName,
                     ServerId    = (long)guildId,
                     ServerName  = guildName,
                     SetById     = (long)userId,
                     SetByName   = userName,
                     SetTime     = DateTime.Now
                 };
                 db.ChannelOutputs.Add(createChannel);
             }
             else
             {
                 currentChannel.ChannelId   = (long)channelId;
                 currentChannel.ChannelName = channelName;
                 currentChannel.ServerId    = (long)guildId;
                 currentChannel.ServerName  = guildName;
                 currentChannel.SetById     = (long)userId;
                 currentChannel.SetByName   = userName;
                 currentChannel.SetTime     = DateTime.Now;
             }
             await db.SaveChangesAsync();
         }
     });
 }
Exemple #13
0
        public async Task SetPartition([Remainder] string args = null)
        {
            var embed = new EmbedBuilder();

            embed.Title = "Parition setter for NinjaBot";
            int?partition = int.Parse(args.Trim());

            try
            {
                if (partition != null)
                {
                    using (var db = new NinjaBotEntities())
                    {
                        var curTier = db.CurrentRaidTier.FirstOrDefault();
                        curTier.Partition = partition;
                        await db.SaveChangesAsync();
                    }
                }
                embed.Description = $"Parition set to {partition}";
            }
            catch (Exception ex)
            {
                _logger.LogError($"Error setting partition -> [{ex.Message}]");
                embed.Description = "Error setting parition!";
            }
            await _cc.Reply(Context, embed);

            WarcraftLogs.CurrentRaidTier.Partition = partition;
        }
Exemple #14
0
        public async Task AddWord([Remainder] string word)
        {
            var sb = new StringBuilder();

            using (var db = new NinjaBotEntities())
            {
                var  words     = db.WordList.Where(w => w.ServerId == (long)Context.Guild.Id).ToList();
                bool wordFound = false;
                foreach (var singleWord in words)
                {
                    if (singleWord.Word.ToLower().Contains(word.ToLower()))
                    {
                        wordFound = true;
                    }
                }
                if (wordFound)
                {
                    sb.AppendLine($"[{word}] is already in the list!");
                }
                else
                {
                    sb.AppendLine($"Adding [{word}] to the list!");
                    db.Add(new WordList
                    {
                        ServerId   = (long)Context.Guild.Id,
                        ServerName = Context.Guild.Name,
                        Word       = word,
                        SetById    = (long)Context.User.Id
                    });
                    await db.SaveChangesAsync();
                }
            }
            await _cc.Reply(Context, sb.ToString());
        }
        private void MigrateOldReports()
        {
            List <LogMonitoring> logWatchList = null;

            try
            {
                using (var db = new NinjaBotEntities())
                {
                    logWatchList = db.LogMonitoring.ToList();
                    foreach (var entry in logWatchList.Where(r => !string.IsNullOrEmpty(r.ReportId)))
                    {
                        var oldReportId   = entry.ReportId;
                        var oldLatestDate = entry.LatestLog;
                        entry.LatestLogRetail = oldLatestDate;
                        entry.RetailReportId  = oldReportId;
                        entry.ReportId        = string.Empty;
                        System.Console.WriteLine($"Updating [{entry.ServerName}]...");
                        db.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                //_logger.LogError($"Error getting log watch list -> [{ex.Message}]");
            }
        }
Exemple #16
0
        public async Task ListWoWResource([Remainder] string args = null)
        {
            List <WowResources> resources = null;

            using (var db = new NinjaBotEntities())
            {
                resources = db.WowResources.Where(r => r.ClassName.ToLower().Contains(args)).ToList();
            }
            if (resources != null)
            {
                var embed = new EmbedBuilder();
                embed.Title = $"WoW Resource List Search: [{args}]";
                foreach (var resource in resources)
                {
                    StringBuilder sb = new StringBuilder();
                    sb.AppendLine($"Class: [{resource.ClassName}]");
                    sb.AppendLine($"Specialization: [{resource.Specialization}]");
                    sb.AppendLine($"Resource: [{resource.Resource}]");
                    sb.AppendLine($"ResourceDescription: [{resource.ResourceDescription}]");
                    embed.AddField(new EmbedFieldBuilder
                    {
                        Name  = $"{resource.Id}",
                        Value = sb.ToString()
                    });
                }
                await _cc.Reply(Context, embed);
            }
        }
        public async Task SetStats(string name)
        {
            try
            {
                using (var db = new NinjaBotEntities())
                {
                    string        channel    = Context.Channel.Name;
                    string        userName   = Context.User.Username;
                    StringBuilder sb         = new StringBuilder();
                    string        rlUserName = name;

                    if (Uri.IsWellFormedUriString(rlUserName, UriKind.RelativeOrAbsolute))
                    {
                        rlUserName = rlUserName.TrimEnd('/');
                        rlUserName = rlUserName.Substring(rlUserName.LastIndexOf('/') + 1);
                    }

                    SteamModel.Player fromSteam = _steam.GetSteamPlayerInfo(rlUserName);
                    if (string.IsNullOrEmpty(fromSteam.steamid))
                    {
                        sb.AppendLine($"{Context.User.Mention}, Please specify a steam username/full profile URL to link with your Discord username!");
                        await _cc.Reply(Context, sb.ToString());

                        return;
                    }
                    try
                    {
                        var addUser = new RlStat();
                        var rlUser  = db.RlStats.Where(r => r.DiscordUserName == userName).FirstOrDefault();
                        if (rlUser == null)
                        {
                            addUser.DiscordUserName = userName;
                            addUser.SteamID         = long.Parse(fromSteam.steamid);
                            addUser.DiscordUserID   = (long)Context.User.Id;
                            db.RlStats.Add(addUser);
                        }
                        else
                        {
                            rlUser.SteamID       = long.Parse(fromSteam.steamid);
                            rlUser.DiscordUserID = (long)Context.User.Id;
                            //rl.setUserName(userName, fromSteam.steamid);
                        }
                        db.SaveChanges();
                        sb.AppendLine($"{Context.User.Mention}, you've associated [**{fromSteam.personaname}**] with your Discord name!");
                        await _cc.Reply(Context, sb.ToString());
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"RL Stats: Error setting name -> {ex.Message}");
                        sb.AppendLine($"{Context.User.Mention}, something went wrong, sorry :(");
                        await _cc.Reply(Context, sb.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"{ex.Message}");
            }
        }
        public async Task SetStats(string name, string platform)
        {
            try
            {
                string        channel       = Context.Channel.Name;
                string        userName      = Context.User.Username;
                ulong         discordUserId = Context.User.Id;
                StringBuilder sb            = new StringBuilder();

                using (var db = new NinjaBotEntities())
                {
                    switch (platform.ToLower())
                    {
                    case "steam":
                    {
                        var getPlayer = await _rlsClient.GetPlayerAsync(RlsPlatform.Steam, name);

                        try
                        {
                            var addUser = new RlStat();
                            var rlUser  = db.RlStats.Where(r => (ulong)r.DiscordUserID == discordUserId).FirstOrDefault();
                            if (rlUser == null)
                            {
                                addUser.DiscordUserName = userName;
                                addUser.DiscordUserID   = (long)discordUserId;
                                addUser.SteamID         = long.Parse(getPlayer.UniqueId);
                                addUser.DiscordUserID   = (long)Context.User.Id;
                                addUser.Platform        = RlsPlatform.Steam.ToString();
                                addUser.RlPlayerName    = getPlayer.DisplayName;
                                db.RlStats.Add(addUser);
                            }
                            else
                            {
                                rlUser.SteamID       = long.Parse(getPlayer.UniqueId);
                                rlUser.DiscordUserID = (long)discordUserId;
                                rlUser.RlPlayerName  = getPlayer.DisplayName;
                                rlUser.Platform      = RlsPlatform.Steam.ToString();
                            }
                            db.SaveChanges();
                            sb.AppendLine($"{Context.User.Mention}, you've associated [**{getPlayer.DisplayName}**(steam)] with your Discord name!");
                            await _cc.Reply(Context, sb.ToString());
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine($"RL Stats: Error setting name -> {ex.Message}");
                            sb.AppendLine($"{Context.User.Mention}, something went wrong, sorry :(");
                            await _cc.Reply(Context, sb.ToString());
                        }
                        break;
                    }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"{ex.Message}");
            }
        }
Exemple #19
0
        public async Task PopulateLogs()
        {
            {
                List <WowGuildAssociations> guildList    = null;
                List <LogMonitoring>        logWatchList = null;
                try
                {
                    using (var db = new NinjaBotEntities())
                    {
                        guildList    = db.WowGuildAssociations.ToList();
                        logWatchList = db.LogMonitoring.ToList();
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Error getting guild/logwatch list -> [{ex.Message}]");
                }
                if (guildList != null)
                {
                    foreach (var guild in guildList)
                    {
                        try
                        {
                            var watchGuild = logWatchList.Where(w => w.ServerId == guild.ServerId).FirstOrDefault();
                            if (watchGuild != null)
                            {
                                if (watchGuild.MonitorLogs)
                                {
                                    //System._logger.LogInformation($"YES! Watch logs on {guild.ServerName}!");
                                    var logs = await _logsApi.GetReportsFromGuild(guildName : guild.WowGuild, realm : guild.WowRealm.Replace("'", ""), region : guild.WowRegion);

                                    if (logs != null)
                                    {
                                        var      latestLog = logs[logs.Count - 1];
                                        DateTime startTime = _wowApi.UnixTimeStampToDateTime(latestLog.start);
                                        {
                                            using (var db = new NinjaBotEntities())
                                            {
                                                var latestForGuild = db.LogMonitoring.Where(l => l.ServerId == guild.ServerId).FirstOrDefault();
                                                latestForGuild.LatestLogRetail = startTime;
                                                latestForGuild.RetailReportId  = latestLog.id;
                                                await db.SaveChangesAsync();
                                            }
                                            //System._logger.LogInformation($"Updated [{watchGuild.ServerName}] -> [{latestLog.id}] [{latestLog.owner}]!");
                                        }
                                    }
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            _logger.LogError($"Error checking for logs! -> [{ex.Message}]");
                        }
                    }
                }
            }
        }
Exemple #20
0
        public AwaySystem getAwayUser(string discordUserName)
        {
            var awayUser = new AwaySystem();

            using (var db = new NinjaBotEntities())
            {
                awayUser = db.AwaySystem.Where(a => a.UserName == discordUserName).FirstOrDefault();
            }
            return(awayUser);
        }
 private ServerGreeting GetGreeting(SocketGuildUser user)
 {
     ServerGreeting shouldGreet = null;
     var guildId = user.Guild.Id;
     using (var db = new NinjaBotEntities())
     {
         shouldGreet = db.ServerGreetings.Where(g => g.DiscordGuildId == (long)guildId).FirstOrDefault();
     }
     return shouldGreet;
 }
Exemple #22
0
        private async Task <Warnings> GetWarning(ICommandContext context, IGuildUser userWarned)
        {
            Warnings warning = null;

            using (var db = new NinjaBotEntities())
            {
                warning = db.Warnings.Where(w => w.ServerId == (long)context.Guild.Id && w.UserWarnedId == (long)userWarned.Id).FirstOrDefault();
            }
            return(warning);
        }
Exemple #23
0
        public async Task AskQuestion([Remainder] string args)
        {
            var    embed   = new EmbedBuilder();
            Random r       = new Random();
            var    answers = new List <C8Ball>();

            using (var db = new NinjaBotEntities())
            {
                answers = db.C8Ball.ToList();
                if (answers == null)
                {
                    answers.Add(new C8Ball
                    {
                        AnswerId = 0,
                        Answer   = "No! (cant access DB)",
                        Color    = "Red"
                    });
                }
            }
            var    answer     = answers[r.Next(answers.Count())];
            string answerText = string.Empty;

            if (answer != null)
            {
                answerText = answer.Answer;
                switch (answer.Color.ToLower())
                {
                case "yellow":
                {
                    embed.WithColor(new Color(255, 255, 0));
                    break;
                }

                case "red":
                {
                    embed.WithColor(new Color(255, 0, 0));
                    break;
                }

                case "green":
                {
                    embed.WithColor(new Color(0, 128, 0));
                    break;
                }
                }
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("**   **");
                sb.AppendLine($"**{answerText}**");
                sb.AppendLine("**   **\n");
                embed.Description = sb.ToString();
            }
            embed.ThumbnailUrl = Context.User.GetAvatarUrl();
            embed.Title        = $":crystal_ball: Ninja 8-Ball: (**{args}**) :crystal_ball:";
            await _cc.Reply(Context, embed);
        }
Exemple #24
0
        public async Task ChangeParting([Remainder] string args = null)
        {
            var           embed = new EmbedBuilder();
            StringBuilder sb    = new StringBuilder();

            if (!string.IsNullOrEmpty(args))
            {
                embed.Title = $"Parting message change for {Context.Guild.Name}";
                sb.AppendLine("New message:");
                sb.AppendLine(args);
                using (var db = new NinjaBotEntities())
                {
                    try
                    {
                        var guildGreetingInfo = db.ServerGreetings.Where(g => g.DiscordGuildId == (long)Context.Guild.Id).FirstOrDefault();
                        if (guildGreetingInfo != null)
                        {
                            guildGreetingInfo.PartingMessage = args.Trim();
                            guildGreetingInfo.SetById        = (long)Context.User.Id;
                            guildGreetingInfo.SetByName      = Context.User.Username;
                            guildGreetingInfo.TimeSet        = DateTime.Now;
                        }
                        else
                        {
                            db.ServerGreetings.Add(new ServerGreeting
                            {
                                DiscordGuildId = (long)Context.Guild.Id,
                                PartingMessage = args.Trim(),
                                SetById        = (long)Context.User.Id,
                                SetByName      = Context.User.Username,
                                TimeSet        = DateTime.Now
                            });
                        }
                        await db.SaveChangesAsync();
                    }
                    catch (Exception)
                    {
                        embed.Title = $"Error changing message";
                        sb.AppendLine($"{Context.User.Mention},");
                        sb.AppendLine($"I've encounted an error, please contact the owner for help.");
                    }
                }
            }
            else
            {
                embed.Title = $"Error changing message";
                sb.AppendLine($"{Context.User.Mention},");
                sb.AppendLine($"Please provided a message!");
            }
            embed.Description = sb.ToString();
            embed.WithColor(new Color(0, 255, 0));
            embed.ThumbnailUrl = Context.Guild.IconUrl;
            await _cc.Reply(Context, embed);
        }
        private async Task <RlUserStat> GetStatsFromDb(SteamModel.Player fromSteam)
        {
            RlUserStat rlUserStats = null;
            long       steamId     = long.Parse(fromSteam.steamid);

            using (var db = new NinjaBotEntities())
            {
                rlUserStats = db.RlUserStats.Where(r => r.SteamID == steamId).FirstOrDefault();
            }
            return(rlUserStats);
        }
        public async Task RemoveChar(string charName = null)
        {
            var embed = new EmbedBuilder();
            var sb    = new StringBuilder();

            if (charName != null)
            {
                try
                {
                    WowMChar charMatch = null;
                    using (var db = new NinjaBotEntities())
                    {
                        charMatch = db.WowMChar.Where(d => d.DiscordUserId == (long)Context.User.Id && d.ServerId == (long)Context.Guild.Id && charName.ToLower() == d.CharName.ToLower()).FirstOrDefault();
                        if (charMatch != null)
                        {
                            db.WowMChar.Remove(charMatch);
                            await db.SaveChangesAsync();

                            sb.AppendLine($"Character [**{charMatch.CharName}**] successfully removed!");
                            embed.WithColor(0, 255, 0);
                        }
                        else
                        {
                            sb.AppendLine($"Could not find [**{charName}**]!");
                            embed.WithColor(255, 0, 0);
                        }
                    }
                }
                catch
                {
                }
            }
            else
            {
                embed.WithColor(255, 0, 0);
                sb.AppendLine("Please specify a character name!");
                using (var db = new NinjaBotEntities())
                {
                    var chars = db.WowMChar.Where(d => d.DiscordUserId == (long)Context.User.Id && d.ServerId == (long)Context.Guild.Id).ToList();
                    if (chars != null && chars.Count > 0)
                    {
                        sb.AppendLine($"Your character's names are:");
                        foreach (var character in chars)
                        {
                            sb.AppendLine($":white_medium_small_square: [**{character.CharName}**]");
                        }
                    }
                }
            }
            embed.ThumbnailUrl = Context.User.GetAvatarUrl();
            embed.Title        = "Character Removal";
            embed.Description  = sb.ToString();
            await _cc.Reply(Context, embed);
        }
Exemple #27
0
        private PrefixList GetPrefix(long serverId)
        {
            PrefixList prefix = null;

            using (var db = new NinjaBotEntities())
            {
                prefix = db.PrefixList.Where(p => p.ServerId == serverId).FirstOrDefault();
            }

            return(prefix);
        }
Exemple #28
0
        public async Task <List <WowAuctions> > GetAuctionsByRealm(string realmName, string regionName = "us")
        {
            AuctionsModel.AuctionFile file;
            AuctionsModel.Auctions    a = new AuctionsModel.Auctions();
            AuctionsModel.Auction[]   auctions;
            string             url         = string.Empty;
            string             fileContent = string.Empty;
            DateTime?          latestTimeStampFromDb;
            List <WowAuctions> dbAuctions    = new List <WowAuctions>();
            List <WowAuctions> returnAuction = new List <WowAuctions>();

            url = $"/auction/data/{realmName}?locale={regionName}";

            file = JsonConvert.DeserializeObject <AuctionsModel.AuctionFile>(GetAPIRequest(url, regionName));
            string   fileURL      = file.files[0].url;
            DateTime lastModified = UnixTimeStampToDateTime(file.files[0].lastModified);

            using (var db = new NinjaBotEntities())
            {
                dbAuctions            = db.WowAuctions.Where(r => r.RealmName.ToLower() == realmName.ToLower()).ToList();
                latestTimeStampFromDb = dbAuctions.OrderBy(t => t.DateModified).Take(1).Select(l => l.DateModified).FirstOrDefault();
                //db.Database.CurrentTransaction.Dispose();
                //db.Database.Connection.Close();
            }

            if (dbAuctions.Count > 0)
            {
                if (lastModified > latestTimeStampFromDb)
                {
                    fileContent = GetAPIRequest(fileURL, true);
                }
                else
                {
                    return(dbAuctions);
                }
            }
            else
            {
                fileContent = GetAPIRequest(fileURL, true);
            }
            a                    = JsonConvert.DeserializeObject <AuctionsModel.Auctions>(fileContent);
            auctions             = a.auctions;
            auctions[0].fileDate = lastModified;
            await AddAuctionsToDb(realmName, a, auctions, lastModified);

            using (var db = new NinjaBotEntities())
            {
                string slugName = a.realms[0].slug;
                returnAuction = db.WowAuctions.Where(w => w.RealmSlug == slugName).ToList();
                //db.Database.Connection.Close();
            }
            return(returnAuction);
        }
Exemple #29
0
 private async void ResetWarnings(Warnings warning)
 {
     using (var db = new NinjaBotEntities())
     {
         var currentWarning = db.Warnings.Where(w => w.Warnid == warning.Warnid).FirstOrDefault();
         if (currentWarning != null)
         {
             db.Warnings.Remove(currentWarning);
             await db.SaveChangesAsync();
         }
     }
 }
        public async Task <RlStat> GetRlUserInfo(bool ps)
        {
            string        userName = Context.User.Username;
            StringBuilder sb       = new StringBuilder();
            RlStat        rlUser   = null;

            using (var db = new NinjaBotEntities())
            {
                rlUser = db.RlStats.FirstOrDefault(r => r.DiscordUserName == userName);
            }
            return(rlUser);
        }