• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

wrproject

[C#] IRC BOT

6 mensagens neste tópico

Boas pessoal,este é um pequeno bot que manda uma mensagem de boas vindas para qualquer utilizador que entra no canal.

O Script ainda tem alguns bugs,mas mais tarde ponho a versao actualizada.

Mas é o suficiente para quem quer iniciar-se na programação de bots.

Espero que gostem :(

[ircbot.cs]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Collections;
using System.IO;
using System.Threading;

/*
* 
IRC BOT Module By Wrproject AKA Elizeu Cuginguilua
Mail: mixeliseu13_8@hotmail.com / elizeucc@hotmail.com
* 
*/

namespace IRCBOT
{
    class IrcBot
    {
        //Members
        TcpClient _client;
        string command;
        string password;
        string server;
        int port= 6667; //default port of the server irc
        string user;
        string realname;
        string nick;
        NetworkStream ns;
        StreamReader Reader;
        StreamWriter Writer;
        string Mode;
        string MsgReceived;  //Stores the message received from server
        char[] Tokens = {' '};
        string Channel="#P@P"; //the channel to join
        bool sentpong = false;
        //Inicialize the member variables
        public IrcBot(string server,int port,string user,string nick,string realname,string password,string mode)
        {

            this.realname = realname;
            this.server = server;
            this.port = port;
            this.user = user;
            this.nick = nick;
            this.password = password;
            this.Mode = mode;
        }


        //Start a connection
        public void StartBot()
        {
            _client = new TcpClient();

            try
            {
                _client.Connect(server, port);
                ns =_client.GetStream();
                Reader = new StreamReader(ns);
                Writer = new StreamWriter(ns);
                Console.WriteLine(":: Conected with the server sucessfully ::\n\n");

                SendCommand("USER "+user+" 0 * :"+realname);

                SendCommand("NICK "+nick);

                if(!password.Equals(""))
                SendCommand("nickserv identify "+password);

                SendCommand("MODE "+nick+" "+Mode);

                

                //an infinite loop to receive the server commans
                while(_client.Connected)
                {


                    if(ns.CanRead)
                    {

                        MsgReceived = Reader.ReadLine();
                        ParseCommand(MsgReceived);
                        Console.WriteLine(MsgReceived);
                        
                    }

                   

                    Thread.Sleep(100);
                }



            }
            catch (Exception e)
            {

                Console.WriteLine("An error ocurred when attempting connecting to the irc server");

            }
            
        }

        public void SendCommand(string cmd)
        {

            command = cmd + "\r\n";
            Writer.Write(command);
            Writer.Flush();
            ns.Flush();
        }


        //This method parse all the command comming from the server
        public void ParseCommand(string cmd)
        {
            string[] q=new string[10];



            if(cmd.StartsWith("PING"))
            {
                q = cmd.Split(Tokens);
                SendCommand("PONG "+q[1]);

                if(sentpong==false)
                {
                SendCommand("JOIN " + Channel);
                sentpong = true;

                }
            }


            //bot para enviar uma mensagem automática quando um utilizador entra no canal
            if(cmd.Contains("JOIN"))
            {
                int ends_index=cmd.LastIndexOf("!");

                string WelcomeMessage="PRIVMSG "+Channel+" :olá "+cmd.Substring(1,ends_index)+" ao canal mais fixe chamado "+Channel;
                SendCommand(WelcomeMessage);

            }

           // SendCommand("PRIVMSG #p@p :jjsjsdjsbdjsjdsj");
            
        }


    }
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo pouco que me lembro de IRC:

Eggdrop é tipo um BOT numa BNC e algo difrente :P

um BOT e simplesmente outro cliente de IRC que tens aberto que faz aquilo que tu o programares para fazer :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eggdrop é tipo um BOT numa BNC e algo difrente :P

discordo.

BNC's são servidores que te mantem no IRC permanentemente, mas nao permitem extender as funções atraves de scripts.

Eggdrop é um bot que se mantem no IRC(é o maximo parecido com BNC), que permite extender as suas funções atraves de scripts TCL. e correm em sistemas UNIX.

É possivel tambem programar em mIRC scripting que corre em outra janela do mIRC, mas isso é outra historia.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

discordo.

BNC's são servidores que te mantem no IRC permanentemente, mas nao permitem extender as funções atraves de scripts.

Eggdrop é um bot que se mantem no IRC(é o maximo parecido com BNC), que permite extender as suas funções atraves de scripts TCL. e correm em sistemas UNIX.

É possivel tambem programar em mIRC scripting que corre em outra janela do mIRC, mas isso é outra historia.

BNC, como o próprio nome indica (Bouncer) é uma proxy entre o cliente e o servidor de IRC, o que ele faz é encaminhar as mensagens do server para o cliente e vice-versa. Quando o cliente não está ligado, ele mantém a ligação ao server e pode ou não manter em cache o que o servidor lhe enviou para depois dar ao cliente quando este se ligar novamente.

EggDrop é um programa que está ligado ao IRC e que normalmente já tem conjunto de funcionalidades básicas e comuns para o mesmo, mas pode ser extendido como foi dito, com scripts TCL. Ao contrário do que foi dito, não é limitado a UNIX, existe também para SO Windows.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora