Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Net.Sockets;
- using System.IO;
- namespace TwitchBot
- {
- public class ChatBot
- {
- public string user = TwitchBot.Program.leil;
- public string pass = TwitchBot.Program.lel;
- TcpClient tcpClient;
- StreamReader reader;
- StreamWriter writer;
- public string userName, password, channelName, prefixForSendingChatMessages;
- DateTime lastMessageSendTime;
- Queue<string> sendMessageQueue;
- public ChatBot()
- {
- sendMessageQueue = new Queue<string>();
- this.userName = File.ReadAllText("username.txt").ToLower();
- this.channelName = userName;
- this.password = pass = File.ReadAllText("password.txt");
- prefixForSendingChatMessages = String.Format(":{0}!{0}@{0}.tmi.twitch.tv PRIVMSG #{1} :", userName, channelName);
- Reconnect();
- }
- public void SendTwitchMessage(string message)
- {
- sendMessageQueue.Enqueue(message);
- }
- void Reconnect()
- {
- tcpClient = new TcpClient("irc.twitch.tv", 6667);
- reader = new StreamReader(tcpClient.GetStream());
- writer = new StreamWriter(tcpClient.GetStream());
- writer.AutoFlush = true;
- writer.WriteLine(String.Format("PASS {0}\r\nNICK {1}\r\nUser {1} 8 * :{1}", password, userName));
- //writer.WriteLine("CAP REQ :twitch.tv/membership");
- writer.WriteLine("JOIN #" + channelName);
- lastMessageSendTime = DateTime.Now;
- }
- public void Update()
- {
- if (!tcpClient.Connected)
- {
- Reconnect();
- }
- TryReceiveMessages();
- TrySendingMessages();
- }
- void TryReceiveMessages()
- {
- if (tcpClient.Available > 0)
- {
- var message = reader.ReadLine();
- Console.WriteLine(String.Format("\r\nNew message: {0}", message));
- var iCollon = message.IndexOf(":", 1);
- if (iCollon > 0)
- {
- var command = message.Substring(1, iCollon);
- if (command.Contains("PRIVMSG #"))
- {
- var iBang = command.IndexOf("!");
- if (iBang > 0)
- {
- var speaker = command.Substring(0, iBang);
- var chatMessage = message.Substring(iCollon + 1);
- ReceiveMessage(speaker, chatMessage);
- }
- }
- }
- }
- }
- void ReceiveMessage(string speaker, string message)
- {
- Console.WriteLine(String.Format("\r\n{0}: {1}", speaker, message));
- if (message.StartsWith("!hi"))
- {
- SendTwitchMessage(String.Format("Hello, {0}", speaker));
- }
- }
- void TrySendingMessages()
- {
- if (DateTime.Now - lastMessageSendTime > TimeSpan.FromSeconds(2))
- {
- if (sendMessageQueue.Count > 0)
- {
- var message = sendMessageQueue.Dequeue();
- writer.WriteLine(String.Format("{0}{1}", prefixForSendingChatMessages, message));
- lastMessageSendTime = DateTime.Now;
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment