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;
- namespace TwitchTools
- {
- class ChatCommunication
- {
- StatsManagement statsManagement = new StatsManagement();
- Queue<string> sendMessageQueue;
- TcpClient tcpClient;
- StreamReader reader;
- StreamWriter writer;
- string username, password, channel, chatCommandId, chatMessagePrefix;
- public void ChatBot()
- {
- sendMessageQueue = new Queue<string>();
- SetConnection();
- Reconnect();
- WelcomeMessage();
- }
- private void SetConnection()
- {
- username = "RNGFishBot";
- password = "authentification";
- channel = "baqfish";
- chatCommandId = "PRIVMSG";
- chatMessagePrefix = ":" + username + "!" + username + "@" + username + ".tmi.twitch.tv " + chatCommandId + " #" + channel + " :";
- }
- void Reconnect()
- {
- tcpClient = new TcpClient("irc.twitch.tv", 6667);
- reader = new StreamReader(tcpClient.GetStream());
- writer = new StreamWriter(tcpClient.GetStream());
- writer.AutoFlush = true;
- writer.WriteLine("PASS " + password + Environment.NewLine + "NICK " + username + Environment.NewLine + "USER " + username + " 8 * :" + username);
- writer.WriteLine("CAP REQ :twitch.tv/membership");
- writer.WriteLine("JOIN #" + channel);
- }
- private void WelcomeMessage()
- {
- string welcomeMessage = "Bot is up and ready to rock!";
- SendMessage(welcomeMessage);
- }
- public void Update()
- {
- if (!tcpClient.Connected)
- {
- Reconnect();
- }
- TryReceiveMessages();
- TrySendingMessages();
- statsManagement.LoadUserInformation();
- statsManagement.UpdateStats();
- SendMessage(statsManagement.UpdateRaid());
- }
- void TrySendingMessages()
- {
- if (sendMessageQueue.Count > 0)
- {
- var message = sendMessageQueue.Dequeue();
- writer.WriteLine(chatMessagePrefix + message);
- }
- }
- void SendMessage(string message)
- {
- if (message == "")
- {
- return;
- }
- sendMessageQueue.Enqueue(message);
- }
- void TryReceiveMessages()
- {
- if (tcpClient.Available > 0 || reader.Peek() >= 0)
- {
- var message = reader.ReadLine();
- var iCollon = message.IndexOf(":", 1);
- if (iCollon > 0)
- {
- var command = message.Substring(1, iCollon);
- if (command.Contains(chatCommandId))
- {
- var iBang = command.IndexOf("!");
- if (iBang > 0)
- {
- var speaker = command.Substring(0, iBang);
- var chatMessage = message.Substring(iCollon + 1);
- ReceivingMessage(speaker, chatMessage);
- }
- }
- }
- }
- }
- private void ReceivingMessage(string speaker, string chatMessage)
- {
- bool returnMessageExists;
- string returnMessage = "";
- returnMessageExists = statsManagement.ProcessReceivedMessage(speaker, chatMessage, ref returnMessage);
- if (!returnMessageExists)
- {
- return;
- }
- SendMessage(returnMessage);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement