Beispiel #1
0
 public CV(CurrentUser user)
 {
     this.user         = user;
     experienceHandler = new ExperienceHandler(user);
     educationHandler  = new EducationHandler(user);
     db           = Database.Open("StarterSite");
     Id           = FirstName = LastName = Email = PhoneNumber = Website = Address = Summary = "";
     Theme        = "Default";
     experiences  = new List <Experience>();
     educations   = new List <Education>();
     DocumentName = "(Untitled)";
     Complete     = false;
 }
Beispiel #2
0
        public async Task HandleCommandAsync(SocketMessage msg)
        {
            if (!(msg is SocketUserMessage message) || message.Author.IsBot)
            {
                return;
            }
            if (message.Channel.GetType() != typeof(SocketTextChannel))
            {
                return;
            }

            Server server = await DatabaseQueries.GetOrCreateServerAsync(((SocketGuildChannel)message.Channel).Guild.Id);

            User user = await DatabaseQueries.GetOrCreateUserAsync(message.Author.Id);

            // Never blacklist the bot owner.
            if (user.IsBlacklisted && user.UserId != ConfigProperties.BotConfig.BotOwnerId)
            {
                return;
            }
            if (server.IsBlacklisted)
            {
                return;
            }

            var context = new ShardedCommandContext(_client, message);

            if (await IsFilteredPhrase(context, server, message))
            {
                return; // If filtered phrase (and user isn't admin), return.
            }
            await ExperienceHandler.TryAddExp(user, server, context);

            await ServerSpecificExperienceHandler.TryAddExp(user, server, context);

            // If the channel is blacklisted and the user isn't an Admin, return.
            if (server.BlackListedChannels.Any(x => x.ChannelId == context.Channel.Id) &&
                !context.Guild.GetUser(context.User.Id).GuildPermissions.Administrator)
            {
                return;
            }

            // Parsing of osu! beatmaps.
            if (server.OsuLinkParsingEnabled)
            {
                if (Regex.IsMatch(msg.Content, @"http[Ss|\s]://osu.ppy.sh/beatmapsets/[0-9]*#\b(?:osu|taiko|mania|fruits)\b/[0-9]*") ||
                    Regex.IsMatch(msg.Content, @"http[Ss|\s]://osu.ppy.sh/b/[0-9]*"))
                {
                    await AutomaticBeatmapLinkParserService.LinkParserMethod(msg, context);
                }
            }

            int argPos = 0;

            if (!(message.HasStringPrefix(server.CommandPrefix, ref argPos) ||
                  message.HasMentionPrefix(_client.CurrentUser, ref argPos)) ||
                message.Author.IsBot)
            {
                return;
            }

            await Commands.ExecuteAsync(context, argPos, _services);
        }