Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var channel              = "nick_larsen";
            var teamUrlSlug          = "livecoders";
            var twitchUsername       = "******";
            var twitchAccessToken    = Environment.GetEnvironmentVariable("nick_larsen_api_access_token");
            var twitchApiClientId    = Environment.GetEnvironmentVariable("nick_larsen_stream_chat_bot_client_id");
            var twitchApiAccessToken = Environment.GetEnvironmentVariable("nick_larsen_stream_chat_bot_access_token");

            Console.WriteLine($"There is an access token? {!string.IsNullOrWhiteSpace(twitchAccessToken)}");
            Console.WriteLine($"There is a client id? {!string.IsNullOrWhiteSpace(twitchApiClientId)}");
            Console.WriteLine($"There is an api access token? {!string.IsNullOrWhiteSpace(twitchApiAccessToken)}");

            var twitchBot = new TwitchStreamChatBot();

            twitchBot.Initialize(twitchUsername, twitchAccessToken, twitchApiClientId, twitchApiAccessToken, channel, teamUrlSlug);
            twitchBot.ConnectChat();

            string templateFilename = $@"I:\culture-of-development\culture-of-development.github.com\source\_drafts\s0000-{DateTime.UtcNow.ToString("yyyyMMdd")}.md";

            outputStreamTemplateTimer           = new Timer(60_000);
            outputStreamTemplateTimer.Elapsed  += (o, _) => twitchBot.WriteMarkdownTemplate(templateFilename);
            outputStreamTemplateTimer.AutoReset = true;
            outputStreamTemplateTimer.Start();

            Console.ReadLine();
        }
Ejemplo n.º 2
0
        public void Test_Client_OnReSubscriber()
        {
            var    chatBot        = new TwitchStreamChatBot();
            string chatMessageRaw = "TODO";
            var    ircMessage     = GetIrcMessage(chatMessageRaw);
            var    args           = new OnReSubscriberArgs()
            {
                ReSubscriber = new TwitchLib.Client.Models.ReSubscriber(ircMessage),
            };

            Assert.True(chatBot.EndOfStreamRaid == null);
            chatBot.Client_OnReSubscriber(null, args);
            Assert.True(chatBot.EndOfStreamRaid != null);

            var template = chatBot.PopulateMarkdownTemplate().ToString();

            Assert.Contains("TODO", template);
        }
Ejemplo n.º 3
0
        public void Test_Client_OnRaidNotification()
        {
            var    chatBot        = new TwitchStreamChatBot();
            string chatMessageRaw = "@badge-info=;badges=;color=#FF0000;display-name=LuckyNoS7evin;emotes=;msg-param-viewerCount=4;id=306b2ca4-c4ee-4449-84cc-ef5b5cc1c74f;login=LuckyNoS7evin;mod=0;msg-id=raid;room-id=61809127;subscriber=0;system-msg=;tmi-sent-ts=1570725601895;turbo=0;user-id=51497560;user-type= :tmi.twitch.tv USERNOTICE #nick_larsen :";
            var    ircMessage     = GetIrcMessage(chatMessageRaw);
            var    args           = new OnRaidNotificationArgs()
            {
                RaidNotificaiton = new TwitchLib.Client.Models.RaidNotification(ircMessage),
            };

            Assert.True(chatBot.EndOfStreamRaid == null);
            chatBot.Client_OnRaidNotification(null, args);
            Assert.True(chatBot.EndOfStreamRaid != null);

            var template = chatBot.PopulateMarkdownTemplate().ToString();

            Assert.Contains("TODO", template);
        }
Ejemplo n.º 4
0
        public void Test_Client_OnMessageWithRaidCommand()
        {
            var    chatBot         = new TwitchStreamChatBot();
            string chatMessageRaw  = "@badge-info=subscriber/6;badges=broadcaster/1,subscriber/0,premium/1;color=;display-name=nick_larsen;emotes=;flags=;id=0e8c15ea-e4db-49cc-8f6f-d867d2675b3b;mod=0;room-id=61809127;subscriber=1;tmi-sent-ts=1571330987242;turbo=0;user-id=61809127;user-type= :nick_larsen!nick_larsen@nick_larsen.tmi.twitch.tv PRIVMSG #nick_larsen :/raid LuckyNoS7evin";
            var    ircMessage      = GetIrcMessage(chatMessageRaw);
            var    emoteCollection = new TwitchLib.Client.Models.MessageEmoteCollection();
            var    args            = new OnMessageReceivedArgs()
            {
                ChatMessage = new TwitchLib.Client.Models.ChatMessage("nick_larsen", ircMessage, ref emoteCollection),
            };

            Assert.True(chatBot.EndOfStreamRaid == null);
            chatBot.Client_OnMessageReceived(null, args);
            Assert.True(chatBot.EndOfStreamRaid.Channel == "LuckyNoS7evin");

            var template = chatBot.PopulateMarkdownTemplate().ToString();

            Assert.Contains("we raided [LuckyNoS7evin](//twitch.tv/LuckyNoS7evin)", template);
        }
Ejemplo n.º 5
0
        public void Test_Client_OnHosted()
        {
            var chatBot = new TwitchStreamChatBot();
            // TODO: try to get a message that includes viewers
            string chatMessageRaw = ":[email protected] PRIVMSG nick_larsen :tbdgamer is now hosting you.";
            var    ircMessage     = GetIrcMessage(chatMessageRaw);
            var    args           = new OnBeingHostedArgs()
            {
                BeingHostedNotification = new TwitchLib.Client.Models.BeingHostedNotification("nick_larsen", ircMessage),
            };

            chatBot.Client_OnBeingHosted(null, args);
            Assert.True(chatBot.Hosts.Count == 1);
            chatBot.Client_OnBeingHosted(null, args);
            Assert.True(chatBot.Hosts.Count == 1);

            var template = chatBot.PopulateMarkdownTemplate().ToString();

            Assert.Contains("tbdgamer hosted with 0 viewers!", template);
        }
Ejemplo n.º 6
0
        public void Test_Client_OnMessageWithBits()
        {
            var    chatBot         = new TwitchStreamChatBot();
            string chatMessageRaw  = "@badge-info=;badges=bits/100;bits=100;color=#FF0000;display-name=tbdgamer;emotes=;flags=;id=306b2ca4-c4ee-4449-84cc-ef5b5cc1c74f;mod=0;room-id=61809127;subscriber=0;tmi-sent-ts=1570725601895;turbo=0;user-id=51497560;user-type= :[email protected] PRIVMSG #nick_larsen :Cheer100";
            var    ircMessage      = GetIrcMessage(chatMessageRaw);
            var    emoteCollection = new TwitchLib.Client.Models.MessageEmoteCollection();
            var    args            = new OnMessageReceivedArgs()
            {
                ChatMessage = new TwitchLib.Client.Models.ChatMessage("nick_larsen", ircMessage, ref emoteCollection),
            };

            chatBot.Client_OnMessageReceived(null, args);
            Assert.True(chatBot.Cheers.Count == 1);
            chatBot.Client_OnMessageReceived(null, args);
            Assert.True(chatBot.Cheers.Count == 2);

            var template = chatBot.PopulateMarkdownTemplate().ToString();

            Assert.Contains("tbdgamer cheered with 100 bits!", template);
        }
Ejemplo n.º 7
0
        public void Test_Client_OnMessageWithFollowerAnnouncement()
        {
            var    chatBot         = new TwitchStreamChatBot();
            string chatMessageRaw  = "@badge-info=;badges=moderator/1,partner/1;color=#5B99FF;display-name=StreamElements;emotes=;flags=;id=0fce3cfc-04a4-42b2-a981-72cf7c8824a0;mod=1;room-id=61809127;subscriber=0;tmi-sent-ts=1571332723824;turbo=0;user-id=100135110;user-type=mod :[email protected] PRIVMSG #nick_larsen :Welcome to the class rexogamerswitch!";
            var    ircMessage      = GetIrcMessage(chatMessageRaw);
            var    emoteCollection = new TwitchLib.Client.Models.MessageEmoteCollection();
            var    args            = new OnMessageReceivedArgs()
            {
                ChatMessage = new TwitchLib.Client.Models.ChatMessage("nick_larsen", ircMessage, ref emoteCollection),
            };

            Assert.True(chatBot.Follows.Count == 0);
            chatBot.Client_OnMessageReceived(null, args);
            Assert.True(chatBot.Follows.Count == 1);
            chatBot.Client_OnMessageReceived(null, args);
            Assert.True(chatBot.Follows.Count == 1);

            var template = chatBot.PopulateMarkdownTemplate().ToString();

            Assert.Contains(": rexogamerswitch", template);
        }