2014-10-07 4 views
2

Я пытаюсь написать приложение, которое автоматически обрабатывает запросы авторизации Skype. Конечная цель заключается в том, чтобы позволить пользователям платформы присоединяться к &, чтобы подтвердить свои личные дескрипторы Skype, отправив сообщение пользователю Skype для конкретной платформы.Skype4Py: невозможно авторизировать входящие запросы друзей

В частности, я заинтересован в разрешении и удалении пользователя из списка контактов пользователя приложения. Я полностью прочитал документ Python для Linux Skype4Py, и я не нашел полезных методов. При попытке перезаписи BuddyStatus несанкционированного пользователя, я получаю:

for user in skype.UsersWaitingAuthorization: 
    print "User: " + user.Handle + " " + str(user.BuddyStatus) # note that _GetBuddyStatus() works here 
    if not user.ReceivedAuthRequest.startswith("special-marker"): 
     user.BuddyStatus = -1; 

Traceback (most recent call last): 
    File "gn-discovery-skype.py", line 60, in <module> 
    user.BuddyStatus = -1; 
    File "/usr/local/lib/python2.7/dist-packages/Skype4Py/user.py", line 80, in _SetBuddyStatus 
    self._Property('BUDDYSTATUS', int(Value), Cache=False) 
    File "/usr/local/lib/python2.7/dist-packages/Skype4Py/user.py", line 19, in _Property 
    return self._Owner._Property('USER', self.Handle, PropName, Set, Cache) 
    File "/usr/local/lib/python2.7/dist-packages/Skype4Py/skype.py", line 311, in _Property 
    self._DoCommand('SET %s %s' % (jarg, value), jarg) 
    File "/usr/local/lib/python2.7/dist-packages/Skype4Py/skype.py", line 281, in _DoCommand 
    raise SkypeError(int(errnum), errstr) 
Skype4Py.errors.SkypeError: [Errno 518] Invalid status given for BUDDYSTATUS 

Будет ли это быть так, что Skype (с Skype4Py принимает статус) на самом деле просто не позволяет контролировать пользователь санкционирование, оставив его только для реальный пользователь Skype?

+1

Это звучит как низкоуровневый Skype вопрос, как вы можете видеть, ошибка происходит непосредственно из протокола Skype Desktop API. Основываясь на последних двух годах, видя, что происходит со Skype, я предполагаю, что эта функция была удалена из Skype API. –

ответ

1

Если вы хотите удалить кого-либо из списка контактов, вам необходимо использовать 1 не -1.
Даже на кого-то от skype.Friends BuddyStatus -1 вызывает ошибку. Попробуйте.
Но если вы хотите добавить кого-то в список контактов, вы должны изменить BuddyStatus на 2.
Он работает :)

0
user._SetIsAuthorized(1) 

сделает остальную работу за вас

+0

Почему? Предоставьте некоторое объяснение. – rayryeng