1

我正在努力用 SkypeBot 实现一些有趣的功能,我想要实现的功能之一是能够添加新联系人。在查看 Skype4Py 文档时,我注意到这种方法:

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

我正在使用以下代码来尝试访问它:

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 成功添加联系人的方法将不胜感激。

4

2 回答 2

3
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')

例如,应该给你一个句柄来加我。例如,在您收到的对象中,将有一个添加我的选项。

于 2013-05-10T22:01:36.613 回答
0

@Torxed 的回答是正确的,但这里有更多信息,以防有人无法完成最后一英里。

我可以通过这种方式添加联系人:

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

请务必小心,因为这只会添加搜索返回的 FIRST 结果。如果你有确切的用户名,那应该没问题。

于 2016-03-14T05:12:06.197 回答