Делаю бота, почти все закончил... Возникла проблема, когда бота кто-либо добавляет его контакт лист не обновляется
и пользователь не добавляется?
Код:
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;
Что сделано не так?