Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > бот для irc


Автор: NIV 15.10.2008, 18:14
Помогите решить проблему!
Я пишу бота для irc, но возникла проблема,  бот через 3 мин разрывает соединение с сервером!
Заранее спасибо!
Код

program bot;

uses
  winsock,
  windows,
  sysutils,
  ShellAPI;

const
nick ='bot';
chanell='#bot'; // канал 
fin=#13+#10;

var
nick:string;// ник бота
S:TSocket;
D:WSAData;
A:TSockAddr;
Buf_r: array[0..1024] of char;//буфер...сюдя записывается все что приходит от сервера

//Посылка текста
procedure _sender(str:string);
var
i:integer;
begin
for i:=1 to Length(str) do
if send(s, str[i] , 1, 0) = SOCKET_ERROR then
exit;
end;

//Прием текста
procedure CheckAnswer;
var
Hpos: word;
Answer:integer;
begin
Answer:=Recv(S,Buf_r,sizeof(Buf_r),0);
if (Answer=SOCKET_ERROR) or (Answer=0) then
exit;
     Hpos:=pos('!HELP',Buf_r);//если есть команда отсылаем текст
      if Hpos >0 then
       begin
      _sender('NOTICE '+chanell+' : бла..бла...бла.бла' +fin);
        sleep(2000);
        Buf_r:='';
       end;
end;


//Процедура соединения с сервером
Procedure connected;
begin
if WSAStartup($101,D)<>0 then
exit;
A.sin_family:=AF_INET;
A.sin_addr.S_addr:=inet_addr(pchar('91.149.157.69'));
S:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
if S=INVALID_SOCKET then
exit;
A.sin_port:=htons(6667);
if connect(S,A,sizeof(A))<>0 then
exit;
end;


//Процедура входа на канал и логирование
procedure Loging;
begin
_sender ('user'+' '+nick+' '+nick+' '+nick+' '+nick+fin);// логирование
_sender ('nick'+' '+nick+fin); // логирование
_sender ('join '+chanell+fin); // заходим на канал
Sleep(1000);
end;

////START PROGRAMM
begin
connected;
Loging ;
while true do
begin
CheckAnswer;
sleep (1000);
end;
end.

Автор: Qu1nt 15.10.2008, 20:11
Нужно отвечать на команду PING.
Вот хороший пример irc-бота. WinApi + WinSock.
http://xproger.mirgames.ru/files/src/XiRC_src.rar

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)