Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Net.Sockets;
- using System.IO;
- namespace timebot1
- {
- class Program
- {
- public static TcpClient socket;
- public static StreamReader reader;
- public static StreamWriter writer;
- static bool running = true;
- static DateTime dtLaunched = DateTime.Now;
- static string
- username = "munnbot",
- host = "irc.freenode.net",
- desc = "munnbot",
- password = "hunter2",
- admin = "ATMunn",
- command_char = "$";
- static void Main()
- {
- try
- {
- socket = new TcpClient(host, 6667);
- socket.ReceiveBufferSize = 1024;
- Console.WriteLine("Connected");
- NetworkStream stream = socket.GetStream();
- reader = new StreamReader(stream);
- writer = new StreamWriter(stream);
- Send("USER " + username + " 8 * :" + desc);
- Send("NICK " + username);
- Send("PRIVMSG NickServ :identify " + password);
- Send("JOIN #atmunntest");
- ReadMessage(reader);
- reader.Close();
- writer.Close();
- stream.Close();
- }
- catch (Exception ex)
- {
- Console.WriteLine("Error: " + ex.Message);
- }
- }
- //shorthand command for sending to a specific target
- static void SendMessage(string target, string data)
- {
- Send("PRIVMSG " + target + " :" + data);
- }
- //general "send to network" command
- static void Send(string data)
- {
- try
- {
- writer.WriteLine(data);
- Console.WriteLine(">>> " + data);
- writer.Flush();
- }
- catch (Exception ex)
- {
- Console.WriteLine("Send error: " + ex.Message);
- }
- }
- static void ReadMessage(StreamReader reader)
- {
- try
- {
- while (running)
- {
- string data = reader.ReadLine();
- Console.WriteLine(DateTime.Now.ToString("HH:mm:ss ") + data);
- string[] msgParts = data.Split(' ');
- if (msgParts[0].ToLower() == "ping")
- { //ping request
- Send("PONG " + msgParts[1]);
- }
- else
- {
- string
- user = msgParts[0].Split('!')[0].Substring(1),
- cmd = msgParts[1].ToLower(),
- target = msgParts[2];
- switch (cmd)
- {
- case "join":
- //user joined target
- //if user == username, bot joined
- break;
- case "part":
- //user left target
- //if user == username, bot left
- break;
- case "nick":
- //user changed their nick
- break;
- case "quit":
- //user quit
- break;
- case "invite":
- //bot was invited to target
- break;
- case "notice":
- string msg = data.Split(":".ToCharArray(), 3)[2];
- if (msg.Contains("You are now identified for "))
- {
- //bot is identified
- SendMessage(admin, "I am authenticated.");
- }
- break;
- case "privmsg":
- //channel or private message
- if(target == "munnbot")
- {
- target = user;
- }
- ParseInput(user, target, data.Split(":".ToCharArray(), 3)[2]);
- break;
- }
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("Error: " + ex.Message);
- System.Threading.Thread.Sleep(15000);
- ReadMessage(reader);
- }
- }
- static void ParseInput(string user, string target, string msg)
- {
- if (msg.StartsWith(command_char))
- { //bot command
- string[] cmdParts = msg.Split(" ".ToCharArray(), 2);
- switch (cmdParts[0].Substring(1))
- {
- case "uptime":
- TimeSpan ts = DateTime.Now - dtLaunched;
- SendMessage(target, string.Format("I have been running for {0}{1}{2}{3}",
- ts.Days > 0 ? ts.Days.ToString() + "d " : "",
- ts.Hours > 0 ? ts.Hours.ToString() + "h " : "",
- ts.Minutes > 0 ? ts.Minutes.ToString() + "m " : "",
- ts.Seconds.ToString() + "s"
- ));
- break;
- case "hello":
- SendMessage(target, string.Format("Greetings, {0}!", user));
- break;
- case "test":
- SendMessage(target, string.Format("<{0}> $test", user));
- break;
- case "amiawesome":
- SendMessage(target, string.Format("Of course you are, {0}.", user));
- break;
- case "rolldie":
- string[] argParts = cmdParts[1].Split(" ".ToCharArray(), 2);
- if (argParts.Length < 2)
- SendMessage(target, "Not enough parameters.");
- else
- {
- Random r = new Random();
- int result = r.Next(int.Parse(argParts[0]), int.Parse(argParts[1]));
- SendMessage(target, string.Format("You rolled {0}.", result));
- }
- break;
- case "appendtofile":
- File.AppendAllText(@"C:\Users\Public\IrcBots\munnbot\textfilething.txt", " " + cmdParts[1]);
- SendMessage(target, string.Format("Appended \"{0}\" to the file.", cmdParts[1]));
- break;
- case "printfile":
- SendMessage(target, File.ReadAllText(@"C:\Users\Public\IrcBots\munnbot\textfilething.txt"));
- break;
- case "help":
- if (cmdParts.Length == 1)
- {
- switch(cmdParts[1])
- {
- case "uptime":
- SendMessage(target, "Sends the amount of time I have been running for.");
- break;
- case "hello":
- SendMessage(target, "Greets the person who sends the command.");
- break;
- case "test":
- SendMessage(target, "Just prints out whatever ATMunn decides to put there.");
- break;
- case "amiawesome":
- SendMessage(target, "Tells you whether you are awesome or not.");
- break;
- case "rolldie":
- SendMessage(target, "Syntax: $rolldie <min> <max>");
- System.Threading.Thread.Sleep(500);
- SendMessage(target, "Gives a random number between the <min> value and the <max> value.");
- break;
- case "appendtofile":
- SendMessage(target, "Syntax: $appendtofile <text>");
- System.Threading.Thread.Sleep(500);
- SendMessage(target, "Appends whatever <text> is to the end of a file on ATMunn's computer.");
- break;
- case "printfile":
- SendMessage(target, "Prints the current text in the file from appendtofile.");
- break;
- case "help":
- SendMessage(target, "Gives a list of commands, or gives info on a specific command. (You're using it right now...)");
- break;
- case "botfight":
- SendMessage(target, "Fights with timebot2.");
- break;
- }
- }
- else
- {
- SendMessage(target, "Commands I respond to: uptime, hello, test, amiawesome, rolldie, appendtofile, printfile, help, botfight.");
- System.Threading.Thread.Sleep(500);
- SendMessage(target, "For more info on a specific command, type $help <commandname>");
- }
- break;
- case "botfight":
- SendMessage(target, "timebot2, you have so much code, you'd weigh 300 pounds if you were a physical bot!");
- break;
- case "quit":
- if (user == admin)
- {
- Send("QUIT");
- running = false;
- }
- break;
- }
- }
- else
- { // any other message
- string[] cmdParts = msg.Split(" ".ToCharArray(), 2);
- switch (cmdParts[0].Substring(1))
- {
- case "HELP":
- if (cmdParts.Length == 1)
- {
- SendMessage(target, "Currently incomplete.");
- }
- else
- {
- SendMessage(target, "Commands I respond to: uptime, hello, test, amiawesome, rolldie, appendtofile, printfile");
- SendMessage(target, "For more info on a specific command, type /msg munnbot HELP <commandname>");
- }
- break;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement