Guest User

Untitled

a guest
May 12th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.75 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Net.Sockets;
  5.  
  6. namespace Bot
  7. {
  8.     public class TheBot
  9.     {
  10.  
  11.         /* Campi di classe */
  12.         string nickname = "Calogero[Bot]";
  13.         Queue<string> Msgs = new Queue<string>();
  14.         private TcpClient client1;
  15.         private NetworkStream stream;
  16.         StreamWriter Writer;
  17.         StreamReader Reader;
  18.         string Channel = "#ffmagazine.ff/prove";
  19.         string[] nickuser = new string[1];
  20.         string password = "ciaociao0";
  21.  
  22.  
  23.         void MTD()
  24.         {
  25.             stream = client1.GetStream();
  26.         }
  27.  
  28.         static void Main(string[] args)
  29.         {
  30.             TheBot Ogg = new TheBot();
  31.             Ogg.Connessione();
  32.         }
  33.  
  34.         /* Gestione Connessione */
  35.         public void Connessione()
  36.         {
  37.             client1 = new TcpClient();
  38.             client1.Connect("irc.forumfree.it", 6667);
  39.             Console.WriteLine("Connessione in corso... ");
  40.             if (client1.Connected)
  41.             {
  42.                 Console.WriteLine("Connesso con successo");
  43.             }
  44.  
  45.             else
  46.             {
  47.                 Console.WriteLine("Errore durante la connessione, riprovo a connettermi...");
  48.                 Connessione();
  49.             }
  50.             MTD();
  51.             Writer = new StreamWriter(stream, System.Text.Encoding.GetEncoding("UTF-8"));
  52.             Reader = new StreamReader(stream, System.Text.Encoding.GetEncoding("UTF-8"));
  53.             Send("USER BF750289 * * :CalogeroBot");
  54.             Send("NICK " + nickname);
  55.             Send("PRIVMSG NickServ :IDENTIFY " + password);
  56.             Send("USER BF750289 * * :CalogeroBot");
  57.             Send("PRIVMSG NickServ :IDENTIFY " + password);
  58.  
  59.  
  60.  
  61.  
  62.  
  63.             Join(); //passa al metodo di join
  64.         }
  65.  
  66.         /* Metodo di join su canali */
  67.         public void Join() //canale predefinito      
  68.         {
  69.  
  70.             Send("JOIN " + Channel);
  71.             string saluto = ":Salve a tutti voi di " + Channel + ", a Nicolo` piace grosso :O.";
  72.             Read();//passa al metodo di ricezione
  73.         }
  74.  
  75.         /* Metodo di invio */
  76.         public void Send(string Msg)
  77.         {
  78.             Writer.WriteLine(Msg);
  79.             Console.WriteLine(">>>" + Msg);
  80.             Writer.Flush();
  81.  
  82.         }
  83.  
  84.         /* lettura dei comandi e comando kick */
  85.         public void Read()
  86.         {
  87.             string Message;
  88.             while (true)
  89.             {
  90.                 Message = Reader.ReadLine();
  91.                 if (Message != null)
  92.                 {
  93.                     Console.WriteLine("<<< " + Message + ">>>");
  94.                     string[] Comandi = Message.Split(':'); //il raw viene diviso in "", "nick!user@host #chan" e "comando"
  95.                     string cnick = Comandi[1];
  96.                     string[] rnick = cnick.Split(' '); //divisione in "nick!user@host" e "#chan"
  97.                     string nickn = rnick[0];
  98.                     string[] nk = nickn.Split('!');
  99.                     string RequesterNick = nk[0];
  100.                     if (Comandi.Length > 2)
  101.                     {
  102.                         string comando = Comandi[2]; //"comando" viene acquisito da una string nel formato "%comando nick parametri";
  103.                         string[] Command = comando.Split(new char[] { ' ' }, 2); //prende il comando
  104.                         if (Command.Length > 1)
  105.                         {
  106.                             string KickNick = Command[1];
  107.  
  108.  
  109.                             if (Command[0] == "%oscar")
  110.                             {
  111.                                 Send("PRIVMSG " + Command[1] + " :ciao hai vinto forumfree oscar su ffmagazine saluti ciao xd");
  112.  
  113.                             }
  114.                             else
  115.                             {
  116.                                 Read();
  117.                             }
  118.                         }
  119.                     }
  120.                 }
  121.  
  122.                 /* Risposta al ping del server */
  123.  
  124.                 string PingRaw = Reader.ReadLine(); //ottiene il raw del ping ( :PING 65468575)
  125.  
  126.                 if (PingRaw != null)
  127.                 {
  128.                     string[] Answ = PingRaw.Split(':'); //divide il raw in " ", "PING 4564786"
  129.                     string Verify = Answ[1]; //Verify ottiene "PING 879688"
  130.                     string[] Ping = Verify.Split(new char[] { ' ' }, 2); //si ottiene la seconda parte di Answ, che deve essere PING per attivare la condizione
  131.                     if (Ping[0] == "PING")
  132.                     {
  133.                         Send("PONG " + Ping[1]);
  134.                     }
  135.  
  136.                     else
  137.                     {
  138.                         Read();
  139.                     }
  140.  
  141.  
  142.                 }
  143.  
  144.             }
  145.         }
  146.     }
Add Comment
Please, Sign In to add comment