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.
Также взгляните на:
- http://skype4py.sourceforge.net/doc/html/Skype4Py.user.User-class.html
- http://skype4py.sourceforge.net/doc/html/Skype4Py.skype.SkypeEvents-class.html
Также вы можете пойти по этому поводу неправильно. Добавление пользователя Skype напрямую, это не то, как работает Skype.
- поиск
- просьба добавить с сообщением
- ждать разрешения
Итак, попробуйте одно из следующего: (один из них - асинхронный способ поиска и добавления по мере их появления, другой - объединяет ваши результаты)
- http://skype4py.sourceforge.net/doc/html/Skype4Py.skype.Skype-class.html
- http://skype4py.sourceforge.net/doc/html/Skype4Py.skype.Skype-class.html
Так что постарайтесь:
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)
Будьте осторожны, так как это просто добавляет ПЕРВЫЙ результат, возвращаемый поиском. Если у вас есть точное имя пользователя, все должно быть в порядке.