Ejemplo n.º 1
0
        private void Server_Message_Log_Check(object sender, ElapsedEventArgs e)
        {
            var guilds = ServerMessageLogs.GetAllLogs();

            int i  = 0;
            int i2 = 0;

            foreach (var guild in guilds)
            {
                i2++;

                if (guild.ID > 0)
                {
                    ServerMessageLog srvrLog = ServerMessageLogs.GetLog(guild.ID);
                    var twoWeeks             = DateTime.Now - TimeSpan.FromDays(14);


                    for (int j = srvrLog.LastThousandMessages.Count() - 1; j >= 0; j--) //Reverse for loop to remove items from list
                    {
                        var line = srvrLog.LastThousandMessages.ElementAt(j);

                        if (line.Contains(twoWeeks.ToShortDateString()))
                        {
                            srvrLog.LastThousandMessages.Remove(line);
                            i++;
                        }
                    }
                }
            }
            ServerMessageLogs.SaveServerLogging();
            logger.ConsoleTimerElapsed($"Removed {i} lines across {i2} server message logs.");
        }
Ejemplo n.º 2
0
        private async Task LoggingEditedMessages(Cacheable <IMessage, ulong> cache, SocketMessage message, ISocketMessageChannel channel)
        {
            IGuild server           = (channel as ITextChannel).Guild;
            string channelName      = channel.Name;
            Server currentServer    = Servers.GetServer((SocketGuild)server);
            var    currentLog       = ServerMessageLogs.GetLog((SocketGuild)server);
            ulong  loggingChannelID = currentServer.LogMessageEdits;

            if (loggingChannelID == 0)
            {
                return;
            }
            ISocketMessageChannel logChannel = (ISocketMessageChannel)_client.GetGuild(currentServer.ID).GetChannel(loggingChannelID);
            await cache.GetOrDownloadAsync();

            var msg = cache;

            foreach (string loggedMessage in currentLog.LastThousandMessages)
            {
                if (loggedMessage.Contains(message.Id.ToString()) & !message.Author.IsBot)
                {
                    var          text  = loggedMessage.Split('℀');
                    EmbedBuilder embed = new EmbedBuilder();
                    embed.WithTitle("Message Updated");
                    embed.WithDescription($"**Author**: `{message.Author}`\n**Channel**: `#{channel.Name}`\n**Old** {text.FirstOrDefault(x => x.Contains("Message:"))}\n**New** Message: {message.Content}");
                    embed.WithThumbnailUrl("https://i.imgur.com/FdZ5nNT.png");
                    embed.WithTimestamp(DateTime.Now);
                    embed.WithColor(Yellow);
                    await logChannel.SendMessageAsync("", false, embed.Build());
                }
            }
        }
Ejemplo n.º 3
0
        private async Task LogChangesToLogSettings(SocketMessage message)
        {
            var server = (message.Channel as SocketGuildChannel).Guild;
            SocketGuildChannel channel = message.MentionedChannels.First();
            var    user          = (message as SocketUserMessage).Author;
            var    author        = (user as SocketGuildUser).GuildPermissions;
            Server currentServer = Servers.GetServer(server);
            var    currentLog    = ServerMessageLogs.GetLog(server);

            if (author.Administrator && message.Content.Contains("$setlogchannel") || author.Administrator && message.Content.Contains("$log"))
            {
                ulong loggingChannelID = currentServer.LogChangesToLogSettings;
                if (loggingChannelID == 0)
                {
                    return;
                }
                ISocketMessageChannel logChannel = (ISocketMessageChannel)_client.GetGuild(currentServer.ID).GetChannel(loggingChannelID);
                EmbedBuilder          embed      = new EmbedBuilder();
                embed.WithTitle("Administrator Changed Log Settings");
                embed.WithDescription($"Administrator `{user}` has changed logging settings for `{server.Name}`.");
                embed.WithThumbnailUrl("https://i.imgur.com/4lBFG4H.png");
                embed.WithColor(Violet);
                embed.WithTimestamp(DateTime.Now);
                await logChannel.SendMessageAsync("", false, embed.Build());
            }
        }
Ejemplo n.º 4
0
        private async Task LoggingDeletedMessages(Cacheable <IMessage, ulong> cache, ISocketMessageChannel channel) //Called whenever a message is deleted
        {
            IGuild server           = (channel as ITextChannel).Guild;
            string channelName      = channel.Name;
            Server currentServer    = Servers.GetServer((SocketGuild)server);
            var    currentLog       = ServerMessageLogs.GetLog((SocketGuild)server);
            ulong  loggingChannelID = currentServer.LogDeletedMessages;

            if (loggingChannelID == 0)
            {
                return;
            }
            ISocketMessageChannel logChannel = (ISocketMessageChannel)_client.GetGuild(currentServer.ID).GetChannel(loggingChannelID);
            await cache.GetOrDownloadAsync();

            var msg = cache;

            foreach (string loggedMessage in currentLog.LastThousandMessages)
            {
                if (loggedMessage.Contains(msg.Id.ToString()) && !loggedMessage.Contains("Kaguya#2708"))
                {
                    var          text  = loggedMessage.Split('℀');
                    EmbedBuilder embed = new EmbedBuilder();
                    embed.WithTitle("Message Deleted");
                    embed.WithDescription($"`{text.FirstOrDefault(x => x.Contains("Author:"))}` " +
                                          $"\n`{text.FirstOrDefault(x => x.Contains("Channel:"))}` \n`{text.FirstOrDefault(x => x.Contains("Message:"))}` \n`{text.FirstOrDefault(x => x.Contains("MsgID"))}`");
                    embed.WithThumbnailUrl("https://i.imgur.com/ODy5o2s.png");
                    embed.WithTimestamp(DateTime.Now);
                    embed.WithColor(Yellow);
                    await logChannel.SendMessageAsync("", false, embed.Build());
                }
            }
        }
Ejemplo n.º 5
0
        public Task MessageCache(SocketMessage s) //Called whenever a message is sent in a guild. Adds the message to a list.
        {
            if (s != null)
            {
                var msg = s as SocketUserMessage;

                Config.bot.LastSeenMessage = DateTime.Now;

                if (msg != null && !msg.Author.IsBot)
                {
                    if (msg.Channel is SocketTextChannel)
                    {
                        var guild = (msg.Author as SocketGuildUser).Guild;
                        if (guild != null)
                        {
                            ServerMessageLog currentLog = ServerMessageLogs.GetLog(guild);
                            currentLog.AddMessage(msg);
                            ServerMessageLogs.SaveServerLogging();
                            return(Task.CompletedTask);
                        }
                        else
                        {
                            logger.ConsoleCriticalAdvisory($"Failed to cache message for {guild.Name} with ID: {guild.Id}! [REMOVING!!!] Thrown from KaguyaLogMethods.cs line 139!");
                            ServerMessageLogs.RemoveLog(guild.Id);
                            return(Task.CompletedTask);
                        }
                    }
                }
            }
            return(Task.CompletedTask);
        }
Ejemplo n.º 6
0
        private static void ServerLogMethod(SocketCommandContext context)
        {
            var serverLog = ServerMessageLogs.GetLog(context.Guild);

            serverLog.ID         = context.Guild.Id;
            serverLog.ServerName = context.Guild.Name;
            ServerMessageLogs.SaveServerLogging();
        }
Ejemplo n.º 7
0
        public void ServerLogMethod(SocketCommandContext context)
        {
            var server = Servers.GetServer(context.Guild);

            server.ID         = context.Guild.Id;
            server.ServerName = context.Guild.Name;
            ServerMessageLogs.SaveServerLogging();
        }
Ejemplo n.º 8
0
        private async Task MessageCache(SocketMessage s) //Called whenever a message is sent in a guild. Adds the message to a list.
        {
            var msg = s as SocketUserMessage;

            if (msg == null)
            {
                return;
            }
            SocketCommandContext context = new SocketCommandContext(_client, msg);

            if (context.Guild.Id == 264445053596991498 || context.Guild.Id == 333949691962195969)
            {
                return;
            }
            var currentLog = ServerMessageLogs.GetLog(context.Guild);

            currentLog.AddMessage(msg);
            ServerMessageLogs.SaveServerLogging();
        }
Ejemplo n.º 9
0
        private async Task LoggingUserUnbanned(SocketUser user, SocketGuild server)
        {
            Server currentServer    = Servers.GetServer(server);
            var    currentLog       = ServerMessageLogs.GetLog(server);
            ulong  loggingChannelID = currentServer.LogWhenUserIsUnbanned;

            if (loggingChannelID == 0)
            {
                return;
            }
            ISocketMessageChannel logChannel = (ISocketMessageChannel)_client.GetGuild(currentServer.ID).GetChannel(loggingChannelID);
            EmbedBuilder          embed      = new EmbedBuilder();

            embed.WithTitle("User Unbanned");
            embed.WithDescription($"User: `{user.Username}#{user.Discriminator}`\nUser ID: `{user.Id}`");
            embed.WithThumbnailUrl("https://i.imgur.com/RH0HHkJ.png");
            embed.WithTimestamp(DateTime.Now);
            embed.WithColor(Violet);
            await logChannel.SendMessageAsync("", false, embed.Build());
        }
Ejemplo n.º 10
0
        private async Task LoggingUserLeaves(SocketGuildUser user)
        {
            IGuild server           = (user as IGuildUser).Guild;
            Server currentServer    = Servers.GetServer((SocketGuild)server);
            var    currentLog       = ServerMessageLogs.GetLog((SocketGuild)server);
            ulong  loggingChannelID = currentServer.LogWhenUserLeaves;

            if (loggingChannelID == 0)
            {
                return;
            }
            ISocketMessageChannel logChannel = (ISocketMessageChannel)_client.GetGuild(currentServer.ID).GetChannel(loggingChannelID);
            EmbedBuilder          embed      = new EmbedBuilder();

            embed.WithTitle("User Left");
            embed.WithDescription($"User: `{user.Username}#{user.Discriminator}`\n`User ID: {user.Id}`");
            embed.WithThumbnailUrl("https://i.imgur.com/624oxi8.png");
            embed.WithTimestamp(DateTime.Now);
            embed.WithColor(Red);
            await logChannel.SendMessageAsync("", false, embed.Build());
        }