public List <EmoteEntity> BuildFromSocketUserMessage(DiscordMessage message, ulong guildId)
        {
            var emojiStrings = _emoteParser.ExtractEmotesFromMessage(message.Content);

            var emotes = emojiStrings.Select(s =>
            {
                var parsedEmote = EmoteHelper.Parse(s);

                if (parsedEmote == null)
                {
                    throw new Exception($"{s} is not a valid emote string");
                }

                var emoteEntitiy = new EmoteEntity()
                {
                    EmoteId       = parsedEmote.Id,
                    EmoteName     = parsedEmote.Name,
                    EmoteAnimated = parsedEmote.Animated,
                    DateTime      = DateTime.Now,
                    UserId        = message.Author.Id,
                    MessageId     = message.Id,
                    GuildId       = guildId,
                    Source        = EmoteSource.Message
                };

                return(emoteEntitiy);
            }).ToList();

            return(emotes);
        }
Esempio n. 2
0
        public async Task <EmoteEntity> CreateEmoteEntity(EmoteEntity emote)
        {
            emote.Id = Guid.NewGuid();

            _dbContext.Add(emote);

            await _dbContext.SaveChangesAsync();

            return(emote);
        }
Esempio n. 3
0
        public Task <EmoteEntity> GetExistingEntity(EmoteEntity entity)
        {
            var emote = _dbContext.Emotes.AsQueryable()
                        .Where(e => e.EmoteId == entity.EmoteId &&
                               e.MessageId == entity.MessageId &&
                               e.UserId == entity.UserId &&
                               e.GuildId == entity.GuildId)
                        .FirstOrDefaultAsync();

            return(emote);
        }
Esempio n. 4
0
        public async Task RemoveEmoteEntity(EmoteEntity emote)
        {
            var existingEntity = await GetExistingEntity(emote);

            if (existingEntity == null)
            {
                return;
            }

            _dbContext.Remove(existingEntity);

            await _dbContext.SaveChangesAsync();
        }
        public EmoteEntity BuildFromUserReaction(DiscordMessage message, DiscordEmoji emote, ulong userId, ulong guildId)
        {
            var emoteEntity = new EmoteEntity()
            {
                EmoteId       = emote.Id,
                EmoteName     = emote.Name,
                EmoteAnimated = emote.IsAnimated,
                DateTime      = DateTime.Now,
                UserId        = userId,
                MessageId     = message.Id,
                GuildId       = guildId,
                Source        = EmoteSource.Reaction
            };

            return(emoteEntity);
        }
 /// <summary>
 /// Not emoji, belongs to guild
 /// </summary>
 /// <returns></returns>
 private bool IsValidEmote(EmoteEntity emote, DiscordGuild guild)
 {
     return(guild.Emojis.ContainsKey(emote.EmoteId));
 }