public TwitchChatMessage Parse( TwitchChatSender sender, string message, IChatMessageWordResolver wordResolver, IChatMessageEmoteResolver emoteResolver) { var parts = new List <TwitchChatMessagePart>(); var words = message.Split(' '); //var emotes = knownEmotes?.Emotes; var index = -1; foreach (var token in words) { ++index; var emote = emoteResolver.Resolve(token); if (emote != null) { if (index > 0) { parts.Add(new TwitchChatMessagePart("text", " ")); } parts.Add(new TwitchChatMessagePart("emote", emote.ImageUrl)); continue; } var word = wordResolver.Resolve(token); if (index > 0) { parts.Add(new TwitchChatMessagePart("text", " ")); } parts.Add(new TwitchChatMessagePart("text", word)); } return(new TwitchChatMessage(sender, parts.ToArray())); }
public TwitchCommandListener( ILogger logger, IKernel kernel, IConnectionProvider connectionProvider, IMessageBus messageBus, ICommandHandler commandHandler, IChannelProvider channelProvider, IChatMessageWordResolver wordResolver, IConnectionCredentialsProvider credentialsProvider, ITwitchChatMessageEmoteResolverProvider emoteResolverProvider, ITwitchChatMessageParser chatMessageParser) { this.logger = logger; this.kernel = kernel; this.connectionProvider = connectionProvider; this.messageBus = messageBus; this.commandHandler = commandHandler; this.channelProvider = channelProvider; this.wordResolver = wordResolver; this.credentialsProvider = credentialsProvider; this.emoteResolverProvider = emoteResolverProvider; this.chatMessageParser = chatMessageParser; this.CreateTwitchClient(); this.Start(); }