Avatar billede tkoc Nybegynder
25. oktober 2003 - 20:38 Der er 2 kommentarer

IRC code

jeg har et problem jeg skal bruge et script til at connecte
til quakenet.org og join en kanal hvor der er en bot jeg skal sende en komando (!status1) og retunere svare
til mit program

er der nogle der kan hjælpe mig
Avatar billede sys64738 Nybegynder
25. oktober 2003 - 22:16 #1
Det er godt i C# men det burde ikke være så vært at konvertere.


IrcBot.cs: 
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading; 

/*

*  This program establishes a connection to irc server, joins a channel and greets every nickname that
*  joins the channel.
*
*  Coded by Pasi Havia 17.11.2001 http://koti.mbnet.fi/~curupted
*/

class IrcBot
{
        // Irc server to connect
        public static string SERVER = "irc.df.lth.se";
        // Irc server's port (6667 is default port)
        private static int PORT = 6667; 

        // User information defined in RFC 2812 (Internet Relay Chat: Client Protocol) is sent to irc server   
        private static string USER = "USER CSharpBot 8 * :I'm a C# irc bot";       

        // Bot's nickname
        private static string NICK = "BotNick"; 

        // Channel to join
        private static string CHANNEL = "#my_channel"; 

        // StreamWriter is declared here so that PingSender can access it
        public static StreamWriter writer;       

        static void Main (string[] args)
        {     
              NetworkStream stream;
              TcpClient irc;
              string inputLine;
              StreamReader reader;
              string nickname;             

              try
              {
                      irc = new TcpClient (SERVER, PORT);
                      stream = irc.GetStream ();
                      reader = new StreamReader (stream);
                      writer = new StreamWriter (stream);                     

                      // Start PingSender thread
                      PingSender ping = new PingSender ();
                      ping.Start ();                     

                      writer.WriteLine (USER);
                      writer.Flush ();
                      writer.WriteLine ("NICK " + NICK);
                      writer.Flush ();
                      writer.WriteLine ("JOIN " + CHANNEL);
                      writer.Flush (); 

                      while (true)
                      {                     
                              while ( (inputLine = reader.ReadLine () ) != null )
                              {
                                      if (inputLine.EndsWith ("JOIN :" + CHANNEL) )
                                      {
                                              // Parse nickname of person who joined the channel
                                              nickname = inputLine.Substring(1, inputLine.IndexOf ("!") - 1);
                                             
                                              // Welcome the nickname to channel by sending a notice
                                              writer.WriteLine ("NOTICE " + nickname + " :Hi " + nickname +
                                              " and welcome to " + CHANNEL + " channel!");
                                              writer.Flush ();
                                              // Sleep to prevent excess flood
                                              Thread.Sleep (2000);
                                      }
                              }                             

                              // Close all streams
                              writer.Close ();
                              reader.Close ();
                              irc.Close ();
                      }
              }
              catch (Exception e)
              {
                      // Show the exception, sleep for a while and try to establish a new connection to irc server
                      Console.WriteLine (e.ToString () );
                      Thread.Sleep (5000);
                      string[] argv = { };
                      Main (argv);
              }
        }


PingSender.cs:
using System;
using System.Threading; 

/*
*  Class that sends PING to irc server every 15 seconds
*/
class PingSender
{
        static string PING = "PING :";
        private Thread pingSender;
        // Empty constructor makes instance of Thread
        public PingSender ()
        {
              pingSender = new Thread (new ThreadStart (this.Run) );
        } 

        // Starts the thread
        public void Start ()
        {
              pingSender.Start ();
        }

        // Send PING to irc server every 15 seconds
        public void Run ()
        {
              while (true)
              {
                      IrcBot.writer.WriteLine (PING + IrcBot.SERVER);
                      IrcBot.writer.Flush ();
                      Thread.Sleep (15000);
              }
        }
}
Avatar billede tkoc Nybegynder
26. oktober 2003 - 00:39 #2
det er meget godt men det virker ikke jeg connecter til quakenet og den skriver så bare ":wineasy2.se.quakenet.org 451 BotNick BotNick :Register first." er der nogle der har en løsning
hvorfor den siger dette
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester