Advertisement
timeshifter

twitch listener bot

Jul 12th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.37 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. using System.Data.Sql;
  9. using System.Data.SqlClient;
  10.  
  11. namespace gdq_monitor {
  12.     class Program {
  13.         public static TcpClient socket;
  14.         public static StreamReader reader;
  15.         public static StreamWriter writer;
  16.         public static NetworkStream stream;
  17.         public static bool running = true;
  18.         public static string[] pingListeners = new string[] { "#timeshifter08", "#dwangoac" };
  19.  
  20.         public static SqlConnection conn = new SqlConnection("Persist Security Info=False;Integrated Security=true;Initial Catalog = GDQ_LOG; Server=timeshifter-PC\\SQLEXPRESS");
  21.         static void Main(string[] args) {
  22.  
  23.             socket = new TcpClient("irc.twitch.tv", 6667);
  24.             socket.ReceiveBufferSize = 1024;
  25.             reader = new StreamReader(socket.GetStream());
  26.             writer = new StreamWriter(socket.GetStream());
  27.  
  28.             writer.WriteLine("CAP REQ :twitch.tv/tags twitch.tv/commands twitch.tv/membership");
  29.             writer.WriteLine("PASS {oauth}");
  30.             writer.WriteLine("NICK botshifter08");
  31.  
  32.             writer.WriteLine("JOIN #timeshifter08");
  33.  
  34.             writer.Flush();
  35.  
  36.             ReadMessage(reader);
  37.         }
  38.  
  39.  
  40.         static void ReadMessage(StreamReader reader) {
  41.             while (running) {
  42.                 try {
  43.                     string dataFull = reader.ReadLine();
  44.                     if (dataFull != null) {
  45.                         string[] dataArr = dataFull.Split(Environment.NewLine.ToCharArray());
  46.                         foreach (string data in dataArr) {
  47.                             if (data.Trim() != "") {
  48.                                 Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + data);
  49.                                 var dataParts = data.Split(' ');
  50.                                 if (dataParts[0].ToLower() == "ping") {
  51.  
  52.                                     writer.WriteLine("PONG " + data.Split(' ')[1]);
  53.                                     writer.Flush();
  54.                                 }
  55.                                 else if(dataParts.Length>3 && dataParts[2] == "PRIVMSG") {
  56.                                     int idx = data.IndexOf(':', data.IndexOf(dataParts[3]));
  57.                                     if (conn.State != System.Data.ConnectionState.Open)
  58.                                         conn.Open();
  59.  
  60.                                     SqlCommand sqlcomm = new SqlCommand("INSERT INTO [Chat_Log] ([Channel], [Message]) VALUES (@Channel, @Message)", conn);
  61.                                     sqlcomm.Parameters.AddWithValue("@Channel", dataParts[3]);
  62.                                     sqlcomm.Parameters.AddWithValue("Message", data);
  63.                                     sqlcomm.ExecuteNonQuery();
  64.  
  65.                                     if(data.Substring(idx + 1).ToLower().Trim() == "!ping" && pingListeners.Contains(dataParts[3])) {
  66.                                         writer.WriteLine($"PRIVMSG {dataParts[3]} :pong");
  67.                                         writer.Flush();
  68.                                     }
  69.                                 }
  70.                                 else {
  71.                                     if (conn.State != System.Data.ConnectionState.Open)
  72.                                         conn.Open();
  73.  
  74.                                     SqlCommand sqlcomm = new SqlCommand("INSERT INTO [Chat_Log] ([Channel], [Message]) VALUES (@Channel, @Message)", conn);
  75.                                     sqlcomm.Parameters.AddWithValue("@Channel", "system");
  76.                                     sqlcomm.Parameters.AddWithValue("Message", data);
  77.                                     sqlcomm.ExecuteNonQuery();
  78.                                 }
  79.  
  80.                             }
  81.                         }
  82.                     }
  83.                 }
  84.  
  85.  
  86.                 catch (Exception ex) {
  87.                     SqlCommand sqlcomm = new SqlCommand("INSERT INTO [Chat_Log] ([Channel], [Message]) VALUES (@Channel, @Message)", conn);
  88.                     sqlcomm.Parameters.AddWithValue("@Channel", "error");
  89.                     sqlcomm.Parameters.AddWithValue("Message", ex.ToString());
  90.                     sqlcomm.ExecuteNonQuery();
  91.                 }
  92.             }
  93.         }
  94.  
  95.  
  96.  
  97.  
  98.     }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement