Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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?
        }
Beispiel #5
0
 internal Task LeftGuild(SocketGuild guild)
 {
     GuildHandler.RemoveGuild(guild.Id, guild.Name);
     return(Task.CompletedTask);
 }
Beispiel #6
0
 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;
 }
Beispiel #7
0
 internal Task LeftGuild(SocketGuild guild) => Task.Run(() => GuildHandler.RemoveGuild(guild.Id, guild.Name));