uses SysUtils, ICQ;

const
  ICQ_UIN = 123456;         // ICQ на которую будет заходить бот
  ICQ_PASSW = 'passw';      // Пароль для входа
  ICQ_CONTACT = 11223344;   // ICQ кому нужно писать

type
  TMyICQ = class(TICQ)  // Объявляем свой класс, наследуемый от TICQ
  public
    procedure OnMessageRecv(Sender: TObject; Msg, UIN: string); override;  // переобозначаем событие на входящие сообщения
  end;

var
  MyICQ: TMyICQ;
  IcqLog: boolean = false;

procedure TMyICQ.OnMessageRecv(Sender: tobject; Msg, UIN: string);
begin
  if (UpperCase(Msg) = 'Y') then begin                                       // если нам ответили да, то 
    MyICQ.SendMessage(ICQ_CONTACT, 'ОК! Начинаю логировать...');             // пишем сообщение в ответ
    IcqLog:= true;                                                           // и включаем логирование      
  end;
end;

procedure Log(S: string);
begin
  if IcqLog then MyICQ.SendMessage(ICQ_CONTACT, S);
end;

procedure OnFree; //Вызывается перед остановкой скрипта, для очистки ресурсов
begin
  Log('Отключаюсь');
  IcqLog:= false;
  MyICQ.Free;
end;

procedure Fight;
begin
  Log('Иду убивать его: ' + User.Target.Name);  
  if User.DistTo(User.Target) > 100 then Engine.MoveToTarget(-50);
  while (not User.Target.Dead) do Engine.Attack();
  Log('Убил моба. Мои HP: ' + IntToStr(User.HP) + '%');
end;

begin
  MyICQ := TMyICQ.create;
  if MyICQ.Connect(ICQ_UIN, ICQ_PASSW) then begin
    MyICQ.SendMessage(ICQ_CONTACT, 'Привет! Это твой бот ' + User.Name);
    MyICQ.SendMessage(ICQ_CONTACT, 'Тебе логировать в аську: Y / N ?');
  end;
  Delay(-1);
end.