Toon posts:

[C#] IRC Bot, connectie tot stand brengen*

Pagina: 1
Acties:
  • 196 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met een irc bot te maken, ik heb de rfc1459 al eens doorgenomen, maar ik zit met een probleem ivm het inloggen, mijn bot geraakt niet op het web.

Ik denk dat ik het protocol fout interpreteer als login codes gebruik ik:
USER TomVdH hostname hostname :Tom's bot
NICK TomVdH
JOIN TOMCHAN

en dit is mijn code die ik gebruik om de verbinding tot stand te brengen
TcpClient client = new TcpClient("irc.krey.net", 6667);
NetworkStream stream = client.GetStream();

ik heb dus normaal gezien mijn verbinding met kreynet
dan via het streamwriter object stuur ik bovenstaande protocol maar toch logt mijn bot niet in op irc,
programatorisch moet het kloppen want als ik in debug mode door mijn code gaat lijkt alles perfect.

alvast bedankt voor jullie mening

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 13-02 20:06

Gerco

Professional Newbie

Post anders even de conversatie die de bot met de server heeft. De foutmelding die je krijgt en eventueel relevante code. Dan is er iets mee aan te vangen, nu eigenlijk niets.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Thralas
  • Registratie: December 2002
  • Laatst online: 23:57
Als het goed is stuurt de server een PING zodra je connect, deze dien je te beantwoorden.
C++:
1
2
3
4
5
void CIrc::RecvPing(char *pingdata)
{
    sprintf(m_SendBuf, "PONG :%s\r\n", pingdata);
    Send();
}

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Over welke programmeer taal hebben we het hier? :?
mIRC? PHP? ASP? C++? Java? C#? .NET? :?

  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 03:49

lordsnow

I know nothing

Als ik door de code kijk van mijn (heel oude) Delphi IRC botje zie ik dat je alle lijnen text die je richting de server stuurt MOET afsluiten met een Chr(10) + Chr(13) (Carriage return + Linefeed).

Delphi:
1
2
ClientSocket1.Socket.SendText('NICK ' + Nick2 + Chr(10) + Chr(13));
ClientSocket1.Socket.SendText('USER ident_two * * :full name two' + Chr(10) + Chr(13));


.. en dan even verder:

Delphi:
1
ClientSocket1.Socket.SendText('JOIN #funchat' + Chr(10) + Chr(13));



@GX:

RFC1459 is prima voor een Botje.

PASS is niet verplicht voor een client.

[ Voor 74% gewijzigd door lordsnow op 27-06-2006 22:19 ]


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

Ik stel voor dat je RFC 2812 leest, welke gaat over de client kant van het IRC.

En hier staat dat Pass eerst moet: http://www.valinor.sorcer...nection-registration.html :)

[ Voor 9% gewijzigd door GX op 27-06-2006 22:09 ]


  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

vergeet niet dat je channels prefixt met '#' , dus
JOIN #TOMCHAN
ipv
JOIN TOMCHAN

-niks-


Verwijderd

Topicstarter
Gerco schreef op dinsdag 27 juni 2006 @ 21:36:
Post anders even de conversatie die de bot met de server heeft. De foutmelding die je krijgt en eventueel relevante code. Dan is er iets mee aan te vangen, nu eigenlijk niets.
ik krijg geen foutmelding das juist het probleem :-) maar toch connecteert hij niet
mijn bot is geschreven in c#
ik ga effe een beknopte test code die ik gebruik om het online komen te testen posten, want de volledige bot is veel code :-)

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
TcpClient client = new TcpClient("irc.krey.net", 6667);

NetworkStream stream = client.GetStream();

StreamReader streamReader = new System.IO.StreamReader(stream);
StreamWriter streamWriter = new System.IO.StreamWriter(stream);

streamWriter.WriteLine("USER TomVdH TomRealm TomRealm :Tom's Bot");
            streamWriter.Flush();
            streamWriter.WriteLine("NICK TomVdH");
            streamWriter.Flush();
            streamWriter.WriteLine("JOIN #TomVdH");
            streamWriter.Flush();

ook met het # teken voor de channel te zetten geraak ik niet binnen :(

alvast dank voor jullie hulp indien nodig wil ik wel de full code posten hoor, maar normaal gezien zou ik hier toch ook al mee een verbinding moeten tot stand krijgen denk ik

[ Voor 3% gewijzigd door moto-moi op 28-06-2006 14:03 . Reden: ff code-tags toegevoegd ]


  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

wellicht wil je wel even uitlezen wat er allemaal in je streamReader is binnen gekomen?

ben er zomaar benieuwd naar!

-niks-


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
Verwijderd schreef op woensdag 28 juni 2006 @ 13:40:
ook met het # teken voor de channel te zetten geraak ik niet binnen :(
je moet je eerst reggen met de server.

NICK <nickname>
dan krijg je ene ping van de server
dan moet jij PONG <pinggetalding> terugsturen
dan doe je USER <iets> <iets> <iets> :<iets>
en dan krijg je de server messages zut enzo
DAN kan je pas joinen (met hekje)

hier staat het ook:
http://hacks.oreilly.com/pub/h/1963

[ Voor 13% gewijzigd door BasieP op 28-06-2006 14:20 ]

This message was sent on 100% recyclable electrons.


Verwijderd

Topicstarter
[c#]
class Program {
static StreamReader streamReader;
static StreamWriter streamWriter;

static void Main(string[] args) {
TcpClient client = new TcpClient("irc.krey.net", 6667);
Console.WriteLine(client.Connected);
NetworkStream stream = client.GetStream();

// Console.WriteLine(stream.DataAvailable);


streamReader = new System.IO.StreamReader(stream);
Thread reader = new Thread(new ThreadStart(Read));
// reader.Start();
streamWriter = new System.IO.StreamWriter(stream);
Thread writer = new Thread(new ThreadStart(Writer));
// writer.Start();


streamWriter.WriteLine("USER KiLLahBot KiLLahRealm KiLLahRealm :KiLLah's Bot");
streamWriter.Flush();
//Console.WriteLine(streamReader.ReadLine());
streamWriter.WriteLine("NICK KiLLahBot");
streamWriter.Flush();
// Console.WriteLine(streamReader.ReadLine());
streamWriter.WriteLine("JOIN #KiLLahWorld");
streamWriter.Flush();
// Console.WriteLine(streamReader.ReadLine());

}

private static void Read() {
while (true) {
Console.WriteLine(streamReader.ReadLine());
Thread.Sleep(15000);
}
}
public static void Writer() {
while (true) {
streamWriter.WriteLine("PING KiLLahBot");
Thread.Sleep(15000);
}
}

}
[/c#]

Verwijderd

Topicstarter
lukt nog niet in debug mode zie ik echter wel dat mijn bot inlogt, maar krijg dan direct connection reset by peer (zie dit via mirc)

in run mode krijg ik niets te zien nog iemand een ideetje waar het kan fout lopen

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
mijn replie lezen is ook wat he ;)

draai 'nick' en 'user' om en het werkt ;)

btw:
je wilt [code] tags en we hebben een Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif knop

1 ding wat mij direct al opvalt:
je hebt onder elkaar 2x een 'while (true)' loop
hoe moet dat ding ooit in die 2de loop komen?

edit:
net ff getest met telnet, en als ik doe wat jouw botje doet werkt het wel, echter ik denk dat je het te snel achter elkaar uitvoerd

[ Voor 103% gewijzigd door BasieP op 28-06-2006 19:21 ]

This message was sent on 100% recyclable electrons.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:46

Creepy

Tactical Espionage Splatterer

En lees aub nu eerst eens de reply's op de commando's die je stuur. Misschien staat daar nog wat in? In de RFC staat toch duidelijk dat o.a. het NICK commando een reply oplevert.

Daarnaast zijn er legio voorbeelden te vinden van IRC bot's. Ik kan me dan ook niet voorstellen dat je zelf niks relevants hebt kunnen vinden.

En ten derde: Kan je via TR aub even een fatsoenlijk topic titel aangeven? Dit zegt echt helemaal niks over het probleem dat je nu hebt.

[ Voor 48% gewijzigd door Creepy op 28-06-2006 19:54 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Is Meebey irc niks voor jouw? (weet even de url niet, maar google weet het vast wel :))

Gr. michel.

  • lordsnow
  • Registratie: Maart 2000
  • Laatst online: 03:49

lordsnow

I know nothing

't lijkt er op alsof de Topic Starter de moed heeft opgegeven... Ik ben wel benieuwd eigenlijk of het uiteindelijk is gelukt.
Pagina: 1