Programowanie w języku Delphi » Artykuły

IRC w Delphi

  • 2012-05-13 16:55
  • 10 komentarzy
  • 2094 odsłony
  • Oceń ten tekst jako pierwszy

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...

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ę:
Vortex1.Connect;

W przycisku Rozłącz w zdarzeniu OnClick wstawiamy taką linię:
Vortex1.Disconnect; 

A w przycisku Wejdź w zdarzeniu OnClick wstawiamy takie cuś:
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:

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:
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: [email protected]
Mam nadzieje ze pomoglem...

Rozwiniecie/opis procedur vortexa:


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"


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).


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.


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.


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.


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.


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 :-/)


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".


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 :-)


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.


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ł.


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ł.


procedure DeVoice(Nick, Channel: String);
To samo co wyżej ale do zabierania "głosu". Parametry (jak wyżej) to nick "ofiary i kanał.


procedure Who(Mask: String);
Odpowiednik IRCowej komendy /who. Co tu więcej pisać... W parametrach podajemy tylko maske ofiary.


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...)


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.


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...


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.


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...


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.


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
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

xc1024 2008-06-09 17:54

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.

unkind 2006-03-14 23:17

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

morte 2004-07-20 13:49

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

wycicha 2004-06-03 21:13

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

gh00st 2004-05-08 08:56

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

michalek 2004-04-10 21:16

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

weer01 2004-02-07 20:34

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

korn 2004-01-13 12:40

"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 :-)

Marooned 2004-01-08 18:08

[quote]

Vortex1.MyNick:='mój_nick';


Ps3. Jakies problemy[/quote]

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

lofix 2004-01-10 15:57

poza tym temat odgrzany..to juz bylo

i pisze sie DELPHI nie DELPHIM ! ! !