using EllieBot.Common.Configs; namespace EllieBot.Extensions; public sealed class MessageSenderService : IMessageSenderService, IEService { private readonly IBotStrings _bs; private readonly BotConfigService _bcs; private readonly DiscordSocketClient _client; public MessageSenderService(IBotStrings bs, BotConfigService bcs, DiscordSocketClient client) { _bs = bs; _bcs = bcs; _client = client; } public ResponseBuilder Response(IMessageChannel channel) => new ResponseBuilder(_bs, _bcs, _client) .Channel(channel); public ResponseBuilder Response(ICommandContext ctx) => new ResponseBuilder(_bs, _bcs, _client) .Context(ctx); public ResponseBuilder Response(IUser user) => new ResponseBuilder(_bs, _bcs, _client) .User(user); public ResponseBuilder Response(SocketMessageComponent smc) => new ResponseBuilder(_bs, _bcs, _client) .Channel(smc.Channel); public EllieEmbedBuilder CreateEmbed() => new EllieEmbedBuilder(_bcs); } public class EllieEmbedBuilder : EmbedBuilder { private readonly BotConfig _bc; public EllieEmbedBuilder(BotConfigService bcs) { _bc = bcs.Data; } public EmbedBuilder WithOkColor() => WithColor(_bc.Color.Ok.ToDiscordColor()); public EmbedBuilder WithErrorColor() => WithColor(_bc.Color.Error.ToDiscordColor()); public EmbedBuilder WithPendingColor() => WithColor(_bc.Color.Pending.ToDiscordColor()); }