ComponentBuilder GetButtons(RolesService.RolesSetup setup)
        {
            var builder = new ComponentBuilder();
            int buttons = 0;

            foreach (var emoji in setup.Roles)
            {
                IEmote em;
                if (Emote.TryParse(emoji.Key, out var emote))
                {
                    em = emote;
                }
                else
                {
                    em = new Emoji(emoji.Key);
                }
                var role = Context.Guild.GetRole(emoji.Value);
                var name = role?.Name ?? emoji.Value.ToString();
                builder.WithButton(name,
                                   emoji.Value.ToString(),
                                   ButtonStyle.Primary,
                                   em,
                                   row: (buttons++) / 5
                                   );
            }
            return(builder);
        }
        async Task UpdateMessage(RolesService.RolesSetup setup)
        {
            await setup.Message.RemoveAllReactionsAsync();

            var builder = new EmbedBuilder();

            builder.Title       = "Reaction Roles";
            builder.Description = "Use the buttons below to toggle certain roles controlling your access to parts of this server.";
            await setup.Message.ModifyAsync(x =>
            {
                x.Embed      = builder.Build();
                x.Components = GetButtons(setup).Build();
            });
        }