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); }
public async Task <EmoteEntity> CreateEmoteEntity(EmoteEntity emote) { emote.Id = Guid.NewGuid(); _dbContext.Add(emote); await _dbContext.SaveChangesAsync(); return(emote); }
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); }
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)); }