Показать сообщение отдельно
  #1  
Старый 29.05.2009, 17:59
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию Добавить в контакт лист TICQClient

Делаю бота, почти все закончил... Возникла проблема, когда бота кто-либо добавляет его контакт лист не обновляется и пользователь не добавляется?

Код:
type
  TfrmMain = class(TForm)
    ICQClient: TICQClient;
    mmoEvents: TMemo;
    lstContactList: TListBox;
    tmrWaitToAskCL: TTimer;
    Button1: TButton;
    Button2: TButton;
    edtTimeMsg: TLabeledEdit;
    edtSendMsg: TLabeledEdit;
    TimerMsg: TTimer;
    edtMinTimeMsg: TSpinEdit;
    edtMaxTimeMsg: TSpinEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Button3: TButton;
    procedure AddEvent(EventText : String);
    procedure FormDestroy(Sender: TObject);
    procedure ICQClientLogin(Sender: TObject);
    procedure ICQClientLogOff(Sender: TObject);
    procedure ICQClientConnectionFailed(Sender: TObject);
    procedure ICQClientError(Sender: TObject; ErrorType: TErrorType;
      ErrorMsg: String);
    procedure ICQClientServerListRecv(Sender: TObject;
      SrvContactList: TList);
    procedure tmrWaitToAskCLTimer(Sender: TObject);
    procedure ICQClientMessageRecv(Sender: TObject; Msg, UIN: String);
    procedure ICQClientOfflineMsgRecv(Sender: TObject; DateTime: TDateTime;
      Msg, UIN: String);
    procedure ICQClientAddedYou(Sender: TObject; UIN: String);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;
  NeedToConnectAgain, FullReloadContactList: Boolean;
  UIN, MinTime, MaxTime: Integer;
  Password: String;
  Rnd: TStrings;

implementation

{$R *.dfm}

procedure TfrmMain.AddEvent(EventText : String);
begin
 EventText := DateToStr(Date) + ' ' + TimeToStr(Time) + ' >>> ' + EventText;
  if mmoEvents.Text = '' then
    mmoEvents.Text := EventText
  else
    mmoEvents.Lines.Add(EventText);
end;

procedure TfrmMain.FormDestroy(Sender: TObject);
begin
 if ICQClient.LoggedIn then
  ICQClient.LogOff;
end;

procedure TfrmMain.ICQClientLogin(Sender: TObject);
begin
 Button1.Enabled := False;
 Button2.Enabled := True;
 AddEvent('Успешно подключились под номером ' + IntToStr(ICQClient.UIN));
 NeedToConnectAgain := True;
 tmrWaitToAskCL.Enabled := True; // запрос контактов
end;

procedure TfrmMain.ICQClientLogOff(Sender: TObject);
begin
 Button1.Enabled := True;
 Button2.Enabled := False;
 AddEvent('Успешно отключились');
end;

procedure TfrmMain.ICQClientConnectionFailed(Sender: TObject);
begin
 if NeedToConnectAgain then
 begin
  AddEvent('Подключение сорвалось! Переподключаемся...');
  Button1Click(Self);
 end;
end;

procedure TfrmMain.ICQClientError(Sender: TObject; ErrorType: TErrorType;
  ErrorMsg: String);
begin
 AddEvent('Ошибка! ' + ErrorMsg);
end;

procedure TfrmMain.ICQClientServerListRecv(Sender: TObject;
  SrvContactList: TList);
var
 i: LongInt;
 UserInfo: TUINEntry;
begin
  if FullReloadContactList then
  begin
   FullReloadContactList := False;
   lstContactList.Clear;
  end;

  if SrvContactList.Count > 0 then
   for i := 0 to SrvContactList.Count - 1 do
   begin
    UserInfo := PUINEntry(SrvContactList.Items[i])^;
     if UserInfo.CType = 0 then  //если это пользователь (CType = 0), то добавляем в список
      lstContactList.AddItem(IntToStr(UserInfo.UIN), Self);
   end;

 AddEvent('Получен список контактов');
 ICQClient.DestroyUINList(SrvContactList);
end;

procedure TfrmMain.tmrWaitToAskCLTimer(Sender: TObject);
begin
 tmrWaitToAskCL.Enabled := False;
 FullReloadContactList := True;
 ICQClient.RequestContactList;
 AddEvent('Запрошен список контактов');
 ICQClient.RequestOfflineMessages;
 AddEvent('Запрошены оффлайн сообщения');
end;

procedure TfrmMain.ICQClientMessageRecv(Sender: TObject; Msg, UIN: String);
begin
 AddEvent('От (' + UIN + ') принято сообщение: [' + Msg + ']');
end;

procedure TfrmMain.ICQClientOfflineMsgRecv(Sender: TObject;
  DateTime: TDateTime; Msg, UIN: String);
begin
 AddEvent('От (' + UIN + ') принято сообщение в оффлайн в {' + DateTimeToStr(DateTime) + '}: [' + Msg + ']');
end;

procedure TfrmMain.ICQClientAddedYou(Sender: TObject; UIN: String);
begin
 AddEvent('Меня добавил UIN ' + UIN + '.');

end;

procedure TfrmMain.Button1Click(Sender: TObject);
begin
 ICQClient.UIN := UIN;
 ICQClient.Password := Password;
  try
   ICQClient.Login(S_ALLOWDAUTH)
  except
   ShowMessage('Невозможно установить соединение!');
  end;
end;

procedure TfrmMain.Button2Click(Sender: TObject);
begin
 NeedToConnectAgain := False;
 ICQClient.LogOff;
end;

Что сделано не так?
Ответить с цитированием