Advertisement
Guest User

Untitled

a guest
May 10th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Net.Sockets;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace TwitchTools
  10. {
  11. class ChatCommunication
  12. {
  13. StatsManagement statsManagement = new StatsManagement();
  14.  
  15. Queue<string> sendMessageQueue;
  16.  
  17. TcpClient tcpClient;
  18.  
  19. StreamReader reader;
  20. StreamWriter writer;
  21.  
  22. string username, password, channel, chatCommandId, chatMessagePrefix;
  23.  
  24. public void ChatBot()
  25. {
  26. sendMessageQueue = new Queue<string>();
  27.  
  28. SetConnection();
  29. Reconnect();
  30.  
  31. WelcomeMessage();
  32. }
  33.  
  34. private void SetConnection()
  35. {
  36. username = "RNGFishBot";
  37. password = "authentification";
  38. channel = "baqfish";
  39.  
  40. chatCommandId = "PRIVMSG";
  41. chatMessagePrefix = ":" + username + "!" + username + "@" + username + ".tmi.twitch.tv " + chatCommandId + " #" + channel + " :";
  42. }
  43.  
  44. void Reconnect()
  45. {
  46. tcpClient = new TcpClient("irc.twitch.tv", 6667);
  47. reader = new StreamReader(tcpClient.GetStream());
  48. writer = new StreamWriter(tcpClient.GetStream());
  49. writer.AutoFlush = true;
  50.  
  51. writer.WriteLine("PASS " + password + Environment.NewLine + "NICK " + username + Environment.NewLine + "USER " + username + " 8 * :" + username);
  52. writer.WriteLine("CAP REQ :twitch.tv/membership");
  53. writer.WriteLine("JOIN #" + channel);
  54. }
  55.  
  56. private void WelcomeMessage()
  57. {
  58. string welcomeMessage = "Bot is up and ready to rock!";
  59. SendMessage(welcomeMessage);
  60. }
  61.  
  62. public void Update()
  63. {
  64. if (!tcpClient.Connected)
  65. {
  66. Reconnect();
  67. }
  68.  
  69. TryReceiveMessages();
  70. TrySendingMessages();
  71.  
  72. statsManagement.LoadUserInformation();
  73. statsManagement.UpdateStats();
  74. SendMessage(statsManagement.UpdateRaid());
  75. }
  76.  
  77. void TrySendingMessages()
  78. {
  79. if (sendMessageQueue.Count > 0)
  80. {
  81. var message = sendMessageQueue.Dequeue();
  82. writer.WriteLine(chatMessagePrefix + message);
  83. }
  84. }
  85.  
  86. void SendMessage(string message)
  87. {
  88. if (message == "")
  89. {
  90. return;
  91. }
  92.  
  93. sendMessageQueue.Enqueue(message);
  94. }
  95.  
  96. void TryReceiveMessages()
  97. {
  98. if (tcpClient.Available > 0 || reader.Peek() >= 0)
  99. {
  100. var message = reader.ReadLine();
  101.  
  102. var iCollon = message.IndexOf(":", 1);
  103. if (iCollon > 0)
  104. {
  105. var command = message.Substring(1, iCollon);
  106. if (command.Contains(chatCommandId))
  107. {
  108. var iBang = command.IndexOf("!");
  109. if (iBang > 0)
  110. {
  111. var speaker = command.Substring(0, iBang);
  112. var chatMessage = message.Substring(iCollon + 1);
  113.  
  114. ReceivingMessage(speaker, chatMessage);
  115. }
  116. }
  117. }
  118. }
  119. }
  120.  
  121. private void ReceivingMessage(string speaker, string chatMessage)
  122. {
  123. bool returnMessageExists;
  124. string returnMessage = "";
  125. returnMessageExists = statsManagement.ProcessReceivedMessage(speaker, chatMessage, ref returnMessage);
  126.  
  127. if (!returnMessageExists)
  128. {
  129. return;
  130. }
  131.  
  132. SendMessage(returnMessage);
  133. }
  134. }
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement