Показать сообщение отдельно
  #3  
Старый 26.06.2009, 03:01
DjFly DjFly вне форума
Прохожий
 
Регистрация: 22.11.2008
Адрес: Ставрополье
Сообщения: 7
Репутация: 10
По умолчанию

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

Что сделано не так?
Когда номер твоего бота добавляет какой нибудь пользователь?
И кстати ты написал тут весь код бота? что же он умеет?
Подключаться к сети и читать список контактов?
Смотрю сплошной copy+past из демо примера от царя, CheatICQ.
Ну не в этом суть, пиши нормальным языком, что ты хочешь?

если юзеры не могут добавить тебя - то это одно
если же ты не можешь добавить контакт в КЛ, то это другое
Цитата:
Сообщение от Drozh
Даже просто контакт добавить не могу...
тут же следует вопрос, а ты пробовал это как нибудь сделать?
если пробовал, то почему то в твоём коде этого не видно.

Вот тебе пример из хелпа по TICQClient

Код:
procedure SSLAddUser(GroupID, UserID: Word; UIN, Name, SMSNumber: String; Authorize, UpdateUser: Boolean)
Adds user to server side list.
GroupID - id of the group user belongs to (passed in the second parameter in SSLAddGroup procedure)
UserID - random value (from interval: 1 to 32767) associated with this user
UIN - UIN of the user
Name - Nick name of this user (can be empty)
SMSNumber - localy assigned user's SMS number (can be empty)
Authorize - set to True if you are awaiting authorization from this user
UpdateUser - set to True if you are updating user's info: when you want to change Name or SMSNumber
As answer you will receive OnSSLChangeResponse event. 

Notes: 
If user requires authorization before adding him in your contact list you have to request authorization wait untill OnAuthResponse event is called and if authorization is granted -- add UIN to SSL, otherwise you will receive OnSSLChangeResponse with ErrorCode = ERRSSL_AUTH (User not authorized).

Also, there is another way to add user with authorization required -- set FirstUpload parameter in SSLChangeStart procedure to True. But if you do it often server will stop adding users to SSL. Do it when uploading the whole contact list for the first time.

To delete user you have to use procedure SSLDelUser. Example: 

procedure TMainForm.Button1Click(Sender: TObject);
begin
  ICQClient1.SSLChangeStart(False);
  ICQClient1.SSLAddGroup('My Good Friends', 0010);                                  //Create group 'My Good Friends' with id 0010
  ICQClient1.SSLAddGroup('Me lovers', 0011);                                        //Create group 'Me lovers' with id 0011
  ICQClient1.SSLAddUser(0010, 0020, '4024781', 'Coban', '', False, False);          //Add user Coban with UIN 4024781 in 'My Good Friends' group
  ICQClient1.SSLAddUser(0010, 0021, '98384233', 'Animal Killer', '', False, False); //Add user Animal Killer in 'My Good Friends' group
  ICQClient1.SSLAddUser(0011, 0015, '848382', 'Britney', '', False, False);         //Add user Britney in 'Me lovers' group
  ICQClient1.SSLAddUser(0011, 0015, '848382', 'Britney my Love!', '', False, True); //Rename 'Britney' to 'Britney my Love!' ;)
  ICQClient1.SSLDelUser(0011, 0015, '848382', 'Britney my Love!', '', False);       //Remove user 'Britney my Love!' from 'Me lovers' group
  ICQClient1.SSLChangeEnd;
end;
  
Another example, UIN 398712 uses authorization:

{First stage - send authorization request:}
procedure TMainForm.Button1Click(Sender: TObject);
begin
  ICQClient1.SendAuthRequest(398712, 'Authorize me, please, we met at school!');
end;

{Second stage - add user to SSL:}
procedure TMainForm.ICQClient1AuthResponse(Sender: TObject; UIN: String;
  Granted: Boolean; Reason: String);
begin
  ICQClient1.SSLChangeStart(False);
  if Granted then
    ICQClient1.SSLAddUser(0010, 0025, '398712', '', '', False, False)               //Add user(ID: 0025) to group(ID: 0010) after we've been authorized 
  else
    ICQClient1.SSLAddUser(0010, 0025, '398712', '', '', False, True);               //Add user(ID: 0025) to group(ID: 0010), user refused to authorize us (may be you lie ;), so add him in SSL with authorization awaiting status
  ICQClient1.SSLChangeEnd;
end;

Another example, UIN 398712 uses authorization:

{Add user without authorization.}
procedure TMainForm.ICQClient1AuthResponse(Sender: TObject; UIN: String;
  Granted: Boolean; Reason: String);
begin
  ICQClient1.SSLChangeStart(True);                                                  //Now it's not require to request authorization
  ICQClient1.SSLAddUser(0010, 0025, '398712', '', '', False, False);                //Add user(ID: 0025) to group(ID: 0010)
  ICQClient1.SSLChangeEnd;
end;
Ответить с цитированием