Advertisement
Guest User

Untitled

a guest
Jul 30th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.26 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Configuration;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading;
  10. using System.Windows.Forms;
  11. using Meebey.SmartIrc4net;
  12.  
  13. namespace sharpbot
  14. {
  15.     public partial class sbMain : Form
  16.     {
  17.         IrcClient client;
  18.         Thread listenThread;
  19.         string botnick;
  20.         string botname;
  21.         string nspass;
  22.         string botuser;
  23.         string trigger;
  24.         int usermode = 0;
  25.         string[] channels;
  26.  
  27.         delegate void messagesCallback(object sender, IrcEventArgs e);
  28.         ParameterizedThreadStart listener;
  29.  
  30.         public sbMain()
  31.         {
  32.             InitializeComponent();
  33.             client = new IrcClient();
  34.             listener = new ParameterizedThreadStart(bgListen);
  35.             listenThread = new Thread(listener);
  36.             client.OnConnected += new EventHandler(this.Connected);
  37.             client.OnRegistered += new EventHandler(client_OnRegistered);
  38.             client.OnChannelMessage += new IrcEventHandler(client_OnChannelMessage);
  39.             client.SupportNonRfc = true;
  40.             client.CtcpVersion = "sharpclient";
  41.  
  42.             HostBox.Text = Properties.Settings.Default.hostname;
  43.             PortBox.Text = Properties.Settings.Default.port;
  44.             userBox.Text = Properties.Settings.Default.userName;
  45.             rnBox.Text = Properties.Settings.Default.realName;
  46.             NickBox.Text = Properties.Settings.Default.botNick;
  47.             passBox.Text = Properties.Settings.Default.password;
  48.             ChannelBox.Text = Properties.Settings.Default.autoChans;
  49.             cbxTrigger.SelectedIndex = Properties.Settings.Default.trigger;
  50.         }
  51.  
  52.  
  53.         private void Connected(object sender, EventArgs e)
  54.         {
  55.             btnConnect.Text = "Reconnect";
  56.             client.Login(botnick, botname, usermode, botuser, "");
  57.             listenThread.IsBackground = true;
  58.             listenThread.SetApartmentState(ApartmentState.MTA);
  59.             listenThread.Start(client);
  60.         }
  61.  
  62.         private void bgListen(object caller)
  63.         {
  64.             IrcClient bgClient = (IrcClient)caller;
  65.             bgClient.Listen();
  66.         }
  67.  
  68.         private void btnConnect_Click(object sender, EventArgs e)
  69.         {
  70.             if (!client.IsConnected)
  71.             {
  72.                 consoleOut.Text += String.Format("Connecting to {0} as {1}, password: {2}\r\n",
  73.                         HostBox.Text, botnick, nspass);
  74.                 try
  75.                 {
  76.                     client.Connect(HostBox.Text, Convert.ToInt32(PortBox.Text));
  77.                 }
  78.                 catch (CouldNotConnectException)
  79.                 {
  80.                     consoleOut.AppendText("Could not connect. Check your connection and try again in a moment.");
  81.                 }
  82.             }
  83.             else
  84.             {
  85.                 consoleOut.Text += "Reconnecting...\r\n";
  86.  
  87.                 try { client.Reconnect(); }
  88.                 catch (CouldNotConnectException)
  89.                 {
  90.                     consoleOut.AppendText("Could not connect. Check your connection and try again in a moment.");
  91.                 }
  92.             }
  93.         }
  94.  
  95.         void client_OnChannelMessage(object sender, IrcEventArgs e)
  96.         {
  97.             if (consoleOut.InvokeRequired)
  98.             {
  99.                 messagesCallback d = new messagesCallback(client_OnChannelMessage);
  100.                 this.Invoke(d, new object[] { sender, e });
  101.             } else {
  102.             parseCommands(e.Data.MessageArray, e.Data.Nick, e.Data.Channel);
  103.             }
  104.         }
  105.  
  106.         private void parseCommands(string[] message, string nick, string channel)
  107.         {
  108.             if (message[0].StartsWith(trigger))
  109.             {
  110.                 consoleOut.AppendText("!! TRIGGER DETECTED !!\r\n");
  111.             }
  112.         }
  113.  
  114.         private void passBox_TextChanged(object sender, EventArgs e)
  115.         {
  116.             nspass = passBox.Text;
  117.         }
  118.  
  119.         private void NickBox_TextChanged(object sender, EventArgs e)
  120.         {
  121.             botnick = NickBox.Text;
  122.         }
  123.  
  124.         private void rnBox_TextChanged(object sender, EventArgs e)
  125.         {
  126.             botname = rnBox.Text;
  127.         }
  128.  
  129.         private void userBox_TextChanged(object sender, EventArgs e)
  130.         {
  131.             botuser = userBox.Text;
  132.         }
  133.  
  134.         private void usermodeIW_CheckedChanged(object sender, EventArgs e)
  135.         {
  136.             usermode = 0;
  137.         }
  138.  
  139.         private void usermodeI_CheckedChanged(object sender, EventArgs e)
  140.         {
  141.             usermode = 4;
  142.         }
  143.  
  144.         private void ChannelBox_TextChanged(object sender, EventArgs e)
  145.         {
  146.             char[] separator = { '\r', '\n' };
  147.             channels = ChannelBox.Text.Split(separator);
  148.         }
  149.  
  150.         private void autoAcceptInvites_CheckedChanged(object sender, EventArgs e)
  151.         {
  152.             client.AutoJoinOnInvite = true;
  153.         }
  154.  
  155.         private void client_OnRegistered(object sender, EventArgs e)
  156.         {
  157.             if (nspass != String.Empty)
  158.             {
  159.                 client.RfcPrivmsg("NickServ", "IDENTIFY " + nspass);
  160.             }
  161.             client.RfcJoin(channels);
  162.         }
  163.  
  164.         private void btnQuit_Click(object sender, EventArgs e)
  165.         {
  166.             if (client.IsConnected)
  167.             {
  168.                 client.RfcQuit("Shutdown requested.");
  169.                 client.Disconnect();
  170.             }
  171.  
  172.             Properties.Settings.Default.autoChans = ChannelBox.Text;
  173.             Properties.Settings.Default.botNick = NickBox.Text;
  174.             Properties.Settings.Default.hostname = HostBox.Text;
  175.             Properties.Settings.Default.password = passBox.Text;
  176.             Properties.Settings.Default.port = PortBox.Text;
  177.             Properties.Settings.Default.realName = rnBox.Text;
  178.             Properties.Settings.Default.userName = userBox.Text;
  179.             Properties.Settings.Default.trigger = cbxTrigger.SelectedIndex;
  180.             Properties.Settings.Default.Save();
  181.  
  182.             Application.Exit();
  183.         }
  184.  
  185.         private void cbxTrigger_SelectedIndexChanged(object sender, EventArgs e)
  186.         {
  187.             trigger = cbxTrigger.Text;
  188.         }
  189.     }
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement