Advertisement
Guest User

Untitled

a guest
Jan 5th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Threading;
  11. using System.Net.Sockets;
  12. using System.IO;
  13.  
  14. namespace twitchbotplaying
  15. {
  16. public partial class Form1 : Form
  17. {
  18. #region Variables
  19. private static string userName = "toggbot";
  20. private static string password = "";
  21. private string channel = "sip_";
  22. IrcClient irc = new IrcClient("irc.chat.twitch.tv", 6667, userName, password);
  23. NetworkStream serverStream = default(NetworkStream);
  24. string readData = "";
  25. Thread chatThread;
  26. #endregion
  27. public Form1()
  28. {
  29. InitializeComponent();
  30. }
  31.  
  32.  
  33. private void getMessage()
  34. {
  35. serverStream = irc.tcpClient.GetStream();
  36. int buffssize = 0;
  37. byte[] inStream = new byte[10025];
  38. buffssize = irc.tcpClient.ReceiveBufferSize;
  39.  
  40. while(true)
  41. {
  42. try
  43. {
  44. readData = irc.readMessage();
  45. msg();
  46. }
  47. catch(Exception e)
  48. {
  49.  
  50. }
  51. }
  52. }
  53.  
  54. private void msg()
  55. {
  56. if (this.InvokeRequired) this.Invoke(new MethodInvoker(msg));
  57. else
  58. {
  59. if (readData.Contains("PRIVMSG"))
  60. {
  61. if (readData.Contains("bits="))
  62. {
  63. string[] bitVal = readData.Split(new[] { "bits=", ":" }, StringSplitOptions.None);
  64. rtxtChatMeta.AppendText(bitVal[0] + " " + bitVal[1] + Environment.NewLine);
  65. }
  66. else
  67. {
  68. string[] message = readData.Split(new[] { "#" + channel + " :" }, StringSplitOptions.None);
  69. string username = readData.Split(new[] { ":", "!" }, StringSplitOptions.None)[1];
  70. rtxtChatMessage.AppendText(/*username + ": " +*/ message[1] + Environment.NewLine);
  71. }
  72. }
  73. else
  74. {
  75. rtxtChatMeta.AppendText(readData + Environment.NewLine);
  76. }
  77. }
  78. }
  79.  
  80. private void Form1_Load(object sender, EventArgs e)
  81. {
  82. irc.joinRoom(channel);
  83. chatThread = new Thread(getMessage);
  84. chatThread.Start();
  85. }
  86.  
  87. private void Form1_Closing(object sender, FormClosingEventArgs e)
  88. {
  89. irc.leaveRoom();
  90. serverStream.Dispose();
  91. Environment.Exit(0);
  92. }
  93. }
  94.  
  95. class IrcClient
  96. {
  97. private string userName;
  98. private string channel;
  99.  
  100. public TcpClient tcpClient;
  101. private StreamReader inputStream;
  102. private StreamWriter outputStream;
  103.  
  104. public IrcClient(string ip, int port, string userName, string password)
  105. {
  106. tcpClient = new TcpClient(ip, port);
  107. inputStream = new StreamReader(tcpClient.GetStream());
  108. outputStream = new StreamWriter(tcpClient.GetStream());
  109.  
  110. outputStream.WriteLine("PASS " + password);
  111. outputStream.WriteLine("NICK " + userName);
  112. outputStream.WriteLine("USER " + userName + " 8 :" + userName);
  113. outputStream.WriteLine("CAP REQ :twitch.tv/membership");
  114. outputStream.WriteLine("CAP REQ :twitch.tv/commands");
  115. outputStream.WriteLine("CAP REQ :twitch.tv/tags");
  116. outputStream.Flush();
  117. }
  118.  
  119. public void joinRoom(string channel)
  120. {
  121. this.channel = channel;
  122. outputStream.WriteLine("JOIN #" + channel);
  123. outputStream.Flush();
  124. }
  125.  
  126. public void leaveRoom()
  127. {
  128. outputStream.Close();
  129. inputStream.Close();
  130. }
  131.  
  132. public void sendIrcMessage(string message)
  133. {
  134. outputStream.WriteLine(message);
  135. outputStream.Flush();
  136. }
  137.  
  138. public void sendChatMessage(string message)
  139. {
  140. sendIrcMessage(":" + userName + "|" + userName + "@" + ".tmi.twitch.tv PRIVMSG #" + channel + ":" + message);
  141.  
  142. }
  143. public void pingResponse()
  144. {
  145. sendIrcMessage("PONG tmi.twitch.tv\r\n");
  146. }
  147.  
  148. public string readMessage()
  149. {
  150. string message = "";
  151. message = inputStream.ReadLine();
  152. return (message);
  153. }
  154. }
  155.  
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement