IRC w Delphi

korn

Podstawy:

Vortex jest to najlepszy komponent do obsługi IRCa. Możemy napisać w nim bota, klienta IRC, jak i wiele innych rzeczy związanych z IRCem. Atutem VORTEXA jest prostota obsługi... Vortex jest komponentem na licencji Freeware i można go pobrać z www.berzerk.net/vortex/download.php. Komponent znajduje się także tutaj.

Wymaga Pakietu ICS (www.darkling-software.net)

Podstawą jest ustawienie podstawowych parametrów komponentu...

Kopiuj
Vortex1.Server := 'krakow.irc.pl'; 
Vortex1.MyNick := 'mój_nick'; 
Vortex1.Port :=  '6667';

Najlepiej wrzucić to pod OnCreate naszej formy...

Dalej walamy na formę komponent Memo, przyciski: Połącz, Rozłącz, Wejdź.

W przycisku Połącz w zdarzeniu OnClick wstawiamy taką linijkę:

Kopiuj
Vortex1.Connect;

W przycisku Rozłącz w zdarzeniu OnClick wstawiamy taką linię:

Kopiuj
Vortex1.Disconnect; 

A w przycisku Wejdź w zdarzeniu OnClick wstawiamy takie cuś:

Kopiuj
Vortex1.Join('#kanal', 'klucz'); 

Oczywiście #kanal zmieniamy na nazwę kanału na jaki ma wejść a klucz zmieniamy na klucz potrzebny do wejścia na kanał. Jeśli nie potrzeba klucza po prostu nic nie wpisujemy miedzy 'a'.

Wstawiamy na forme 2 komponenty TEdit o nazwach Edit1 i edit2 i TButton, wyslij.
W Edit1 będziemy wpisywac nazwę kanału/nick osoby a w Edit2 to co chcemy powiedzieć na kanale lub do kogoś.
W OnClick przycisku wyslij:

Kopiuj
Vortex1.Say(Edit1.Text, Edit2.Text); 
Memo1.Lines.Add('[' + Edit1.Text + '] ' + Vortex1.MyNick + '> ' + Edit2.Text); 
Edit2.Clear; 

No i teraz na koniec klikamy na komponent Vortex. w Inspektorze Obiektów, w zakładce Events szukamy zdarzenia OnChannelMsg. Klikamy 2 razy na pole obok tego napisu i wpisujemy:

Kopiuj
Memo1.Lines.Add(Nick + '>' + Content); 

I to wszystko.
Buildujemy program i powinien dzialać.
Pisałem ten kurs z pamieci więc mogą wystąpić pewne błędy.
W razie jakiś problemow pisz na: szpieg_sieciowy@go2.pl
Mam nadzieje ze pomoglem...

Rozwiniecie/opis procedur vortexa:

```delphi procedure InitDCCchat(Nick, Port, Adress: String); ``` Dzięki tej procedurze możemy rozmawiać przez ircowy DCC chat (co to jest nie będę tłumaczył) z jakąś osobą. W parametrach podajemy kolejno nick tej osoby, port przez który chcemy się połączyć i adres IP naszej "ofiary"
Kopiuj
procedure InitDCCsend(Nick, Port, Adress, Filename, Filesize: String);

Procedura ta umożliwia przesłanie pliku do innej osoby połączonej z siecią IRC. W parametrach podajemy nick "ofiary", port przez który chcemy przesłać dany plik, adres IP odbiorcy pliku, ścieżkę do pliku który panujemy przesłać i jako ostatni parametr wielkość pliku (chyba w bajtach).

Kopiuj
procedure Quote(Command: String);

Procedura umożliwiająca przesłanie podanej w parametrze komendy bezpośrednio do serwera IRC z którym jesteśmy połączeni. W parametrze jak już wspominałem podajemy jedynie komende.

Kopiuj
procedure Say(Destination, Content: String);

Dzięki tej procedurce możemy wysłać jakiś tekst na kanał, lub do kogoś na PRIV. Jeśli chcemy wysłac do kogoś na PRIV wiadomość, to wystarczy że podamy jego nick w pierwszym parametrze, a w drugim tekst który chcemy przesłać. A jeśli chcesz wysłać coś bezpośrednio na kanał, to w pierwszym parametrze podajesz nazwę kanału (np. #4programmers) a w drugim tekst do wysłania.

Kopiuj
procedure Join(Channel, Key: String);

Procedura umożliwiająca wejście na jakiś kanał. W parametrach podajemy nazwe kanału (np. #4programmers) a jako drugi parametr klucz do kanału. Jeśli kanał nie jest chroniony hasłem, pozostawiamy ten parametr pusty.

Kopiuj
procedure Part(Channel, Reason: String);

Procedura dzięki której możemy opuścić kanał. W parametrach podajemy nazwe kanału i powód naszego postępowania.

Kopiuj
procedure Quit(Reason: String);

Procedura dzięki której opuścimy wszystkie kanały na których się dotychczas znajdowaliśmy. W parametrach podajemy tylko i wyłącznie powód naszego postępowania który ukaże się na wszystkich kanałach z których wychodzimy (nie jestem pewien czy ta procedura nie rozłączy nas z serwerem IRCa :-/)

Kopiuj
procedure SetMode(Destination, Modes: String);

Dzięki tej procedurce ustawimy mody np. dla kanału (jeśli np. chcemy aby kanał był moderowany itp.). W parametrach podajemy "ofiare" naszych działań, następnie jakie mody chcemy nadać naszej "ofierze".

Kopiuj
procedure Ban(Nick, Host, Channel: String);

Procedura banująca osobę na danym kanale :-) a parametry które musimy jej podać to nick "ofiary", jak i jej host no i oczywiście kanał na którym danej osoby nie chcemy :-)

Kopiuj
procedure Op(Nick, Channel: String);

Procedura dzięki której damy danej osobie prawa administratora danego kanału (tzw. Op). W parametrach podajemy nick osoby do zOPowania oraz kanał na którym ma mieć OPa.

Kopiuj
procedure Deop(Nick, Channel: String);

A ta procedura przyda się gdy jakiś OP coś przeskrobie na kanale i zajdze potrzeba pozbawienia go tak wysokiej pozycji na kanale. W takim przypadku w parametrach podajemy nick "ofiary" oraz kanał.

Kopiuj
procedure Voice(Nick, Channel: String);

Procedura umożliwiająca danie jakiejś osobie na kanale "głosu", a dokładnie chodzi tu o to że gdy kanał jest moderowany osoba posiadająca taki przywilej może mówić bezpośrednio na kanał a nie przez moderatora. Parametry to nick oraz kanał.

Kopiuj
procedure DeVoice(Nick, Channel: String);

To samo co wyżej ale do zabierania "głosu". Parametry (jak wyżej) to nick "ofiary i kanał.

Kopiuj
procedure Who(Mask: String);

Odpowiednik IRCowej komendy /who. Co tu więcej pisać... W parametrach podajemy tylko maske ofiary.

Kopiuj
procedure Kick(Victim, Channel, Reason: String);

Procedura umożliwiająca wykonywanie chyba najprzyjemniejszej czynności na IRCu gdy mamy zły humorek. Oczywiście rozchodzi się tutaj o kopanie ludzi z jakiegoś kanału. W parametrach podajemy nick ofiary, kanał z którego ten ktoś ma wylecieć oraz powód naszego postępowania (nie podam przykładu ostatniego parametru bo i tak to cenzura wytnie...)

Kopiuj
procedure Topic(Channel, Topic: String);

Procedura dzięki której ostawimy/zmienimy temat rozmów na kanale. W parametrach podajemy nazwe kanału na którym chcemy zmienić temat, a następnie temat.

Kopiuj
procedure Nick(NewNick: String);

Procedura dzięki której zmienimy swój nick na inny :-) Za dużo parametrów nie musimy podawać, bo tylko jeden a mianowicie nowy nick...

Kopiuj
procedure WhoIs(Nick, Server: String);

Procedura ta to odpowiednik IRCowej komendy /whois... w parametrach podajemy nick osoby o której informacje chcemy pobrać, oraz serwer z którym ta osoba się łączy.

Kopiuj
procedure Disconnect(Force: Boolean; Reason: String);

Procedura dzięki której opuścisz wszystkie kanały na których się znajdujesz i rozłączysz się z serwerem ircowym. W pierwszym parametrze musisz podac wartośc true lub false. Gdy podasz true procedura ta po prostu rozłączy cie z serwerem a na kanałach na których się znajdowałeś pokaże się po prostu że wybyłeś, ale bez podania powodu. A jeśli podasz false to odwrotnie, wyjdzie i poda powód. A drugi parametr to powód...

Kopiuj
procedure Notice(Destination, Content);

Procedura wysyłająca NoTiCe do podanej w parametrze "ofiary". Parametry to "ofiara" a następie tekst który ma być przesłany.

Kopiuj
procedure Connect;

Procedura łącząca nas z serwerem IRCowym. Aby dowiedzieć się troche więcej o łaczeniu się z ircem za pomocą VOTREXa zapraszam do lektury podstaw ktore sa wyzej :-) .

No to by było na tyle. Nie gwarantuje że to są wszystkie procedury które oferuje nam VORTEX ale mam nadzieje że to co tu przeczytaliście wystarczy do napisania jakiegoś super klienta IRC lub bocika, a jeśli czegoś wam brakuje to musicie sobie poradzić dzięki

Kopiuj
procedure Quote(command :string);

i poleceniom ircowym. Życze wam miłej zabawy z IRCem bo prawde mówiąc mi już ta mania troche przeszla... może już jestem za stary... :-)

Ps. Zastrzegam sobie prawo do ewentualnych błędów w opisach ponieważ tym komponentem bawiłem się dość dawno a wszystkie opisy napisałem z łebka. A z reszta te opisy nie sa zbyt rozbudowane ;-)

10 komentarzy

sorka ze sie czepiam, ale nie "meile" tylko "maile" jak juz. moze i nie jestem profesor miodek, ale taka literowka razi w oczy. chociaz i tak nie jest to w pelni poprawne, powinno byc "e-mail'e", ale chcialem zachowac oryginalny charakter.

heh vortrex ci nie wystarczy musisz miec tez zainstalowane paczki ICS-a i vortrex wtedy ci pojdzie ! || a tak <ort>wogule</ort> to ja bym polecal TidIRC z paczek Indy :p

Pzdr

cze mam z tym malutki problem : gdy probuje skompilowac ten projekt to mi wyskakuja takie bledy:

[Error] WinSock.pas(47): Declaration expected but string constant found
[Error] WinSock.pas(524): Undeclared identifier: 'BOOL'
[Error] WinSock.pas(526): Undeclared identifier: 'TFarProc'
[Error] WinSock.pas(528): Undeclared identifier: 'HWND'
[Error] WinSock.pas(555): Undeclared identifier: 'MakeLong'
[Error] WinSock.pas(560): Undeclared identifier: 'MakeLong'
[Error] WinSock.pas(565): Undeclared identifier: 'LOWORD'
[Error] WinSock.pas(570): Undeclared identifier: 'HIWORD'
[Error] WinSock.pas(575): Undeclared identifier: 'LOWORD'
[Error] WinSock.pas(580): Undeclared identifier: 'HIWORD'
[Fatal Error] Unit1.pas(7): Could not compile used unit 'WinSock.pas'

plis pomozcie
PS. mam delphi7

a tak wogóle to jak dodać liste userów do list boxa kontak ze mną na gg 2476210

zainstalowalem potrzebne komponenty wszystko ok bylo do czasu kompilacj programu.
[Error] :File WSocket.dcu not found
lub jak se poradzilem z Wsocket to:
[Error] :File vortex.dcu not found, a wszystkie paczki byly poprawnie zainstalowane...
Czemu tak sie dzieje??

PS moje dalphi to Delphi 6

A jak za pomoca VORTEXa pobrac liste userow i pokazac w ListBoxie??

Hmm... niepomyślałem o tym, że dlatego że to już było dostałeś dwóję???

"poza tym temat odgrzany..to juz bylo" - wiem ze juz bylo ale dostawalem wiele listow zeby rozwinac temat, a pozatym obiecalem ze rozwine... tylko nie rozumiem dlaczego ocena 2 jak poprzedni art mial o tym samym mial 3 :-)

[quote]

Kopiuj
Vortex1.MyNick:='mój_nick';

Ps3. Jakies problemy[/quote]

Polskie litery nie przejdą :P:P
(wiem, wiem - czepiam się ;))

poza tym temat odgrzany..to juz bylo

i pisze sie DELPHI nie DELPHIM ! ! !