Skype4Py - Как успешно добавить контакт?

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

http://skype4py.sourceforge.net/doc/html/Skype4Py.client.Client-class.html

Я использую следующий код, чтобы попытаться получить доступ к этому:

sky = Skype4Py.Skype()
client = Skype4Py.client.Client(sky)
sky.Attach()
client.OpenAddContactDialog("test")

Тем не менее, при попытке использовать почти что-либо из Skype4py.client.Client я получаю тайм-аут с трассировкой:

Traceback (most recent call last):
 File "<input>", line 1, in <module>
 File "build/bdist.macosx-10.8-intel/egg/Skype4Py/client.py", line 164, in OpenDialog
 self._Skype._DoCommand('OPEN %s' % tounicode(' '.join(params)))
 File "build/bdist.macosx-10.8-intel/egg/Skype4Py/skype.py", line 276, in _DoCommand
 self.SendCommand(command)
 File "build/bdist.macosx-10.8-intel/egg/Skype4Py/skype.py", line 778, in SendCommand
 self._Api.send_command(Command)
 File "build/bdist.macosx-10.8-intel/egg/Skype4Py/api/darwin.py", line 395, in send_command
raise SkypeAPIError('Skype command timeout')
SkypeAPIError: Skype command timeout

Я получаю эту ошибку времени ожидания при каждом доступе к клиентскому методу. (т.е. OpenAuthorizationDialog, OpenCallHistoryTab, OpenContactsTab). Я неправильно получаю доступ к этому методу или, возможно, этот метод не поддерживается в более новых версиях Skype? Буду очень признателен за любую помощь в получении этой работы или метод, который успешно добавляет контакты через Skype4Py.

2 ответа

sky = Skype4Py.Skype()
sky.Attach()

client = Skype4Py.client.Client(sky)
client.OpenAddContactDialog("Torxed")

Попробуйте несколько вещей, но я на 99% уверен, что это тот порядок, в котором вы должны что-то делать. В противном случае у вас истечет время ожидания, потому что вложение требует времени для прикрепления, прежде чем вы начнете выполнять действия в отношении API.

Также взгляните на:

Также вы можете пойти по этому поводу неправильно. Добавление пользователя Skype напрямую, это не то, как работает Skype.

  1. поиск
  2. просьба добавить с сообщением
  3. ждать разрешения

Итак, попробуйте одно из следующего: (один из них - асинхронный способ поиска и добавления по мере их появления, другой - объединяет ваши результаты)

Так что постарайтесь:

sky = Skype4Py.Skype()
sky.Attach()
print skyp.SearchForUsers('Torxed')

Должен получить ручку, чтобы добавить меня, например. В объекте, который вы получаете, будет возможность добавить меня, например.

Ответ @Torxed был верным, но вот больше информации на случай, если кто-то не сможет сделать это в последнюю милю.

Я смог добавить контакт таким образом:

import Skype4Py
sky = Skype4Py.Skype()
sky.Attach()
requestMessage = "Please accept my request!"
searchResults = sky.SearchForUsers('echo123')
firstResult = searchResults[0]
firstResult.SetBuddyStatusPendingAuthorization(requestMessage)

Будьте осторожны, так как это просто добавляет ПЕРВЫЙ результат, возвращаемый поиском. Если у вас есть точное имя пользователя, все должно быть в порядке.

Другие вопросы по тегам