internal async Task MessageDeletedAsync(Cacheable <IMessage, ulong> cacheable, ISocketMessageChannel channel) { var config = GuildHandler.GetGuild((channel as SocketGuildChannel).Guild.Id); var message = await cacheable.GetOrDownloadAsync(); if (message == null || config == null || !config.Mod.LogDeletedMessages || CommandExecuted) { return; } config.DeletedMessages.Add(new MessageWrapper { ChannelId = channel.Id, MessageId = message.Id, AuthorId = message.Author.Id, DateTime = message.Timestamp.DateTime, Content = message.Content ?? message.Attachments.FirstOrDefault()?.Url }); GuildHandler.Save(config); }
internal Task HandleMessage(SocketMessage message) { var guild = (message.Channel as SocketGuildChannel).Guild; var config = GuildHandler.GetGuild(guild.Id); if (!(message is SocketUserMessage userMessage) || !(message.Author is SocketGuildUser user)) { return(Task.CompletedTask); } if (userMessage.Source != MessageSource.User || userMessage.Author.IsBot || ConfigHandler.Config.UserBlacklist.Contains(user.Id) || ConfigHandler.Config.ServerBlacklist.Contains(guild.Id) || GuildHelper.GetProfile(guild.Id, userMessage.Author.Id).IsBlacklisted) { return(Task.CompletedTask); } _ = EventHelper.XPHandler(userMessage, config); _ = EventHelper.ModeratorAsync(userMessage, config); _ = EventHelper.ExecuteTag(userMessage, config); _ = EventHelper.AFKHandlerAsync(userMessage, config); return(Task.CompletedTask); }
internal async Task UserJoinedAsync(SocketGuildUser user) { var config = GuildHandler.GetGuild(user.Guild.Id); string message = !config.JoinMessages.Any() ? $"Welcome **{user.Mention}** to the server. {GetEmote(EmoteType.Happy)}" : StringHelper.Replace(config.JoinMessages[Random.Next(config.JoinMessages.Count)], user.Guild.Name, user.Mention); var channel = user.Guild.GetTextChannel(config.JoinChannel); if (channel != null) { await channel.SendMessageAsync(message).ConfigureAwait(false); } var role = user.Guild.GetRole(config.Mod.JoinRole); if (role != null) { await user.AddRoleAsync(role).ConfigureAwait(false); } if (config.Mod.MutedUsers.Contains(user.Id)) { var muteRole = user.Guild.GetRole(config.Mod.MuteRole); await user.AddRoleAsync(muteRole).ConfigureAwait(false); } }
internal async Task UserJoinedAsync(SocketGuildUser user) { var config = GuildHandler.GetGuild(user.Guild.Id); string message = !config.JoinMessages.Any() ? Translator.GetMessage("default-join", config.Locale, user.Mention) : StringHelper.Replace(config.JoinMessages[Random.Next(config.JoinMessages.Count)], user.Guild.Name, user.Mention); var channel = user.Guild.GetTextChannel(config.JoinChannel); if (channel != null) { await channel.SendMessageAsync(message).ConfigureAwait(false); } var joinRole = user.Guild.GetRole(config.Mod.JoinRole); if (joinRole != null) { await user.AddRoleAsync(joinRole).ConfigureAwait(false); } if (config.Mod.MutedUsers.Contains(user.Id)) { var muteRole = user.Guild.GetRole(config.Mod.MuteRole); await user.AddRoleAsync(muteRole).ConfigureAwait(false); } // TODO: logging? }
internal Task LeftGuild(SocketGuild guild) { GuildHandler.RemoveGuild(guild.Id, guild.Name); return(Task.CompletedTask); }
public EventsHandler(CommandService commandService, ConfigHandler configHandler, DiscordSocketClient client, EventHelper eventHelper, GuildHandler guildHandler, GuildHelper guildHelper, Random random) { CommandService = commandService; ConfigHandler = configHandler; EventHelper = eventHelper; Client = client; GuildHandler = guildHandler; GuildHelper = guildHelper; Random = random; }
internal Task LeftGuild(SocketGuild guild) => Task.Run(() => GuildHandler.RemoveGuild(guild.Id, guild.Name));