Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Net.Sockets;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using TwitchCSharp.Clients;
- using TwitchCSharp.Models;
- namespace Tournament_Bot
- {
- public partial class mainForm : Form
- {
- #region variables
- public static string userName; //Name of the bot (must be the same as the bot's twitch channel name)
- public static string room; //Name of the channel to connect to
- public static string password; //Oauth Key
- public static string twitchClientID; //Twitch Client ID
- public static bool canWhisper = true;
- List<CommandSpamUser> cmdSpamUser = new List<CommandSpamUser>();
- List<LinkUserControl> linkUserControl = new List<LinkUserControl>();
- string readData = "";
- commandHandler cmdHandler = new commandHandler();
- Settings settings = new Settings();
- #endregion
- #region IRC
- Thread chatThread;
- IrcClient irc;// = new IrcClient("irc.chat.twitch.tv", 6667, userName, password);
- NetworkStream serverStream = default(NetworkStream);
- #endregion
- #region Borderless window
- public const int WM_NCLBUTTONDOWN = 0xA1;
- public const int HT_CAPTION = 0x2;
- [DllImportAttribute("user32.dll")]
- public static extern int SendMessage(IntPtr hWnd,
- int Msg, int wParam, int lParam);
- [DllImportAttribute("user32.dll")]
- public static extern bool ReleaseCapture();
- #endregion
- public mainForm()
- {
- InitializeComponent();
- }
- private void Form_Load(object sender, EventArgs e)
- {
- userName = settings.Username;
- room = settings.Room;
- password = settings.Password;
- twitchClientID = settings.TwitchClientID;
- joinIRCRoom();
- }
- private void joinIRCRoom()
- {
- irc = new IrcClient("irc.chat.twitch.tv", 6667, userName, password);
- irc.joinRoom(room);
- //sendMsg("I'm ready and waiting, type !commands to see what I can do!");
- chatThread = new Thread(getMessage);
- chatThread.Start();
- //commandHandler cmdHandler = new commandHandler();
- }
- private void getMessage()
- {
- serverStream = irc.tcpClient.GetStream();
- int buffsize = 0;
- byte[] inStream = new byte[10025];
- buffsize = irc.tcpClient.ReceiveBufferSize;
- while (true)
- {
- try
- {
- readData = irc.readMessage();
- msg();
- }
- catch { }
- }
- }
- private void msg()
- {
- try
- {
- if (this.InvokeRequired) this.Invoke(new MethodInvoker(msg));
- else
- {
- //AppendText(chatBox, readData.ToString() + Environment.NewLine, Color.Blue, false);
- string[] sep1 = new string[] { "#" + room + " :" };
- string[] sep2 = new string[] { ":", "!" };
- if (readData.ToString().Contains("PRIVMSG"))
- {
- string user = readData.Split(sep2, StringSplitOptions.None)[1];
- string message = readData.Split(sep1, StringSplitOptions.None)[1];
- if (message[0] == '!')
- { //Only checks command if first character is "!"
- foreach (CommandSpamUser singleUser in cmdSpamUser)
- {
- if (user == singleUser.username)
- {
- if (!CooledDown(singleUser, user)) return; //Stops a user spamming commands
- }
- }
- cmdHandler.checkCommand(message, user);
- if (cmdHandler.CommandSuccess() && !checkMod(user)) //If command executed prevent user from sending a message for an amount of time
- {
- CommandSpamUser spamUser = new CommandSpamUser(); //Mods are not limited by this filter
- spamUser.username = user;
- spamUser.timeOfMessage = DateTime.Now;
- cmdSpamUser.Add(spamUser);
- }
- string outputMessage = cmdHandler.getOutputMessage;
- if (outputMessage.Contains("you have been added to the queue at position") || outputMessage.Contains("you have been removed from the queue") || outputMessage.Contains("Queue closed!")) updateQueue();
- sendMsg(outputMessage);
- }
- else
- {
- // Prevent links from being sent unless user is authorised
- }
- }
- if (readData.Contains("PING")) irc.PingResponse();
- }
- }
- catch { }
- }
- private bool checkMod(string user) {
- List<String> mods = cmdHandler.getMods();
- foreach (string name in mods) if (name == user) return true;
- return false;
- }
- private bool CooledDown(CommandSpamUser spamUser, string username)
- {
- List<CommandSpamUser> temp = cmdSpamUser;
- foreach (CommandSpamUser user in temp)
- {
- TimeSpan duration = DateTime.Now - user.timeOfMessage;
- if (duration > TimeSpan.FromSeconds(3))
- {
- cmdSpamUser.Remove(user);
- return true;
- }
- }
- return false;
- }
- private void updateQueue()
- {
- List<String> queueList = cmdHandler.getQueue();
- txtQueue.Text = "";
- txtAddPlayer.ForeColor = Color.Black;
- foreach (string line in queueList) txtQueue.Text += line + Environment.NewLine;
- }
- private void sendMsg(string message)
- {
- if (message != "")
- irc.sendChatMessage(message);
- }
- private void sendWhisper(string user, string message)
- {
- if (message != "")
- irc.sendWhisper(user, message);
- }
- private void mainForm_MouseDown(object sender, MouseEventArgs e)
- {
- if (e.Button == MouseButtons.Left && isInBounds(e.Location, new Point(0, 0), this.Width, 28))
- {
- ReleaseCapture();
- SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
- }
- }
- private bool isInBounds(Point point1, Point point2, int width, int height)
- {
- if (point1.X > point2.X && point1.X < point2.X + width && point1.Y > point2.Y && point1.Y < point2.Y + height)
- return true;
- else return false;
- }
- private void txtAddPlayer_TextChanged(object sender, EventArgs e)
- {
- cmdHandler.checkCommand("!join", txtAddPlayer.Text);
- sendMsg(cmdHandler.getOutputMessage);
- }
- private void txtAddPlayer_KeyPress(object sender, KeyPressEventArgs e)
- {
- if (e.KeyChar == (char)Keys.Enter)
- {
- cmdHandler.checkCommand("!join " + txtAddPlayer.Text, userName);
- sendMsg(cmdHandler.getOutputMessage);
- txtAddPlayer.Text = "";
- }
- }
- private void txtstartkoth_Click(object sender, EventArgs e)
- {
- if (!cmdHandler.isKOTHRunning())
- {
- cmdHandler.checkCommand("!startkoth 2 3 false true", userName);
- sendMsg(cmdHandler.getOutputMessage);
- }
- }
- private void btnExit_Click(object sender, EventArgs e)
- {
- Environment.Exit(Environment.ExitCode);
- }
- private void btnExit_MouseEnter_1(object sender, EventArgs e)
- {
- btnExit.BackgroundImage = Tournament_Bot.Properties.Resources.btnExit_hover;
- }
- private void btnExit_MouseLeave_1(object sender, EventArgs e)
- {
- btnExit.BackgroundImage = Tournament_Bot.Properties.Resources.btnExit1;
- }
- private void btnWhisper_Click(object sender, EventArgs e)
- {
- //TODO - whisper players
- if (cmbAmount.SelectedIndex < 0 || cmbAmount.SelectedIndex > 9)
- {
- lblError.Visible = true;
- lblError.Text = "*Invalid amount selection!";
- }
- else if (txtMessage.Text.Length < 5)
- {
- lblError.Visible = true;
- lblError.Text = "*Message must not be empty!";
- }
- else {
- lblError.Visible = false;
- whisperCooldown.Enabled = true;
- whisperCooldown.Start();
- btnWhisper.Enabled = false;
- //Send out whispers
- int noToSend = cmbAmount.SelectedIndex + 1;
- List<String> queueList = cmdHandler.getQueue();
- for (int x = 0; x < noToSend; x++)
- {
- sendWhisper(queueList[x], txtMessage.Text);
- }
- }
- }
- private void whisperCooldown_Tick(object sender, EventArgs e)
- {
- canWhisper = true;
- btnWhisper.Enabled = true;
- }
- }
- class CommandSpamUser
- {
- public string username;
- public DateTime timeOfMessage;
- }
- class LinkUserControl
- {
- public string username;
- public int amount;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement