Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net.Sockets;
- using System.Text;
- using System.Threading.Tasks;
- using System.Data.Sql;
- using System.Data.SqlClient;
- namespace gdq_monitor {
- class Program {
- public static TcpClient socket;
- public static StreamReader reader;
- public static StreamWriter writer;
- public static NetworkStream stream;
- public static bool running = true;
- public static string[] pingListeners = new string[] { "#timeshifter08", "#dwangoac" };
- public static SqlConnection conn = new SqlConnection("Persist Security Info=False;Integrated Security=true;Initial Catalog = GDQ_LOG; Server=timeshifter-PC\\SQLEXPRESS");
- static void Main(string[] args) {
- socket = new TcpClient("irc.twitch.tv", 6667);
- socket.ReceiveBufferSize = 1024;
- reader = new StreamReader(socket.GetStream());
- writer = new StreamWriter(socket.GetStream());
- writer.WriteLine("CAP REQ :twitch.tv/tags twitch.tv/commands twitch.tv/membership");
- writer.WriteLine("PASS {oauth}");
- writer.WriteLine("NICK botshifter08");
- writer.WriteLine("JOIN #timeshifter08");
- writer.Flush();
- ReadMessage(reader);
- }
- static void ReadMessage(StreamReader reader) {
- while (running) {
- try {
- string dataFull = reader.ReadLine();
- if (dataFull != null) {
- string[] dataArr = dataFull.Split(Environment.NewLine.ToCharArray());
- foreach (string data in dataArr) {
- if (data.Trim() != "") {
- Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + data);
- var dataParts = data.Split(' ');
- if (dataParts[0].ToLower() == "ping") {
- writer.WriteLine("PONG " + data.Split(' ')[1]);
- writer.Flush();
- }
- else if(dataParts.Length>3 && dataParts[2] == "PRIVMSG") {
- int idx = data.IndexOf(':', data.IndexOf(dataParts[3]));
- if (conn.State != System.Data.ConnectionState.Open)
- conn.Open();
- SqlCommand sqlcomm = new SqlCommand("INSERT INTO [Chat_Log] ([Channel], [Message]) VALUES (@Channel, @Message)", conn);
- sqlcomm.Parameters.AddWithValue("@Channel", dataParts[3]);
- sqlcomm.Parameters.AddWithValue("Message", data);
- sqlcomm.ExecuteNonQuery();
- if(data.Substring(idx + 1).ToLower().Trim() == "!ping" && pingListeners.Contains(dataParts[3])) {
- writer.WriteLine($"PRIVMSG {dataParts[3]} :pong");
- writer.Flush();
- }
- }
- else {
- if (conn.State != System.Data.ConnectionState.Open)
- conn.Open();
- SqlCommand sqlcomm = new SqlCommand("INSERT INTO [Chat_Log] ([Channel], [Message]) VALUES (@Channel, @Message)", conn);
- sqlcomm.Parameters.AddWithValue("@Channel", "system");
- sqlcomm.Parameters.AddWithValue("Message", data);
- sqlcomm.ExecuteNonQuery();
- }
- }
- }
- }
- }
- catch (Exception ex) {
- SqlCommand sqlcomm = new SqlCommand("INSERT INTO [Chat_Log] ([Channel], [Message]) VALUES (@Channel, @Message)", conn);
- sqlcomm.Parameters.AddWithValue("@Channel", "error");
- sqlcomm.Parameters.AddWithValue("Message", ex.ToString());
- sqlcomm.ExecuteNonQuery();
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement