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."); }
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()); } } }
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()); } }
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()); } } }
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); }
private static void ServerLogMethod(SocketCommandContext context) { var serverLog = ServerMessageLogs.GetLog(context.Guild); serverLog.ID = context.Guild.Id; serverLog.ServerName = context.Guild.Name; ServerMessageLogs.SaveServerLogging(); }
public void ServerLogMethod(SocketCommandContext context) { var server = Servers.GetServer(context.Guild); server.ID = context.Guild.Id; server.ServerName = context.Guild.Name; ServerMessageLogs.SaveServerLogging(); }
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(); }
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()); }
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()); }