private async Task HandleReaction(Cacheable <IUserMessage, ulong> cachedMessage, IReaction reaction) { var emote = reaction.Emote; if (!_service.IsStarEmote(emote)) { return; } var message = await cachedMessage.GetOrDownloadAsync(); if (!(message.Channel is IGuildChannel channel)) { return; } bool isUnmoderated = await _designatedChannelService .ChannelHasDesignationAsync(channel.Guild, channel, DesignatedChannelType.Unmoderated); bool starboardExists = await _designatedChannelService .AnyDesignatedChannelAsync(channel.GuildId, DesignatedChannelType.Starboard); if (isUnmoderated || !starboardExists) { return; } int reactionCount = _service.GetReactionCount(message, emote); if (await _service.ExistsOnStarboard(message)) { if (_service.IsAboveReactionThreshold(reactionCount)) { await _service.ModifyEntry(channel.Guild, message, FormatContent(message, emote), GetEmbedColor(reactionCount)); } else { await _service.RemoveFromStarboard(channel.Guild, message); } } else if (_service.IsAboveReactionThreshold(reactionCount)) { var embed = GetStarEmbed(message, GetEmbedColor(reactionCount)); await _service.AddToStarboard(channel.Guild, message, FormatContent(message, emote), embed); } }
private string FormatContent(IUserMessage message, IEmote emote) { var reactionCount = _service.GetReactionCount(message, emote); return($"**{reactionCount}** {_service.GetStarEmote(reactionCount)}"); }