2013-06-18 38 views
4

我一直在试图让我的脚本发送消息到Skype群组对话使用Skype4Py库,我目前唯一能够发送消息是针对特定用户的。如何发送消息到与Skype4Py在Python组群对话

import Skype4Py 
Skype = Skype4Py.Skype() 
Skype.Attach() 
Skype.SendMessage('namehere','testmessage') 

有谁知道我可以如何改变我的代码发送消息到群组对话?

回答

8

下面的小脚本应该可以工作。 (假设你已经有一个群聊开)

def sendGroupChatMessage(): 
    """ 
    Send Group Chat Messages. 
    """ 
    import Skype4Py as skype 
    skypeClient = skype.Skype() 
    skypeClient.Attach() 
    for elem in skypeClient.ActiveChats: 
     if len(elem.Members) > 2: 
      elem.SendMessage("SomeMessageHere") 

我基本上都导入当前的聊天记录,检查会员的数量,并相应地发送消息。也应该很容易在各个组内检查。

要获得句柄,请将您的功能更改为此。

def sendGroupChatMessage(): 
    """ 
    Send Group Chat Messages. 
    """ 
    import Skype4Py as skype 
    skypeClient = skype.Skype() 
    skypeClient.Attach() 
    for elem in skypeClient.ActiveChats: 
     if len(elem.Members) > 2: 
      for friend in elem.Members: 
        print friend.Handle 
      elem.SendMessage("SomeMessageHere") 

如果您可以为您的聊天添加书签,那么您只需要这样做即可。

>>> groupTopic = 'Insert a Topic Here' 
>>> for chat in skypeClient.BookmarkedChats: 
     if chat.Topic == groupTopic: 
      chat.SendMessage("Send a Message Here") 

这是最终代码应该是独立的。

def sendGroupChatMessage(topic=""): 
    """ 
    Send Group Chat Messages. 
    """ 
    import Skype4Py as skype 
    skypeClient = skype.Skype() 
    skypeClient.Attach() 
    messageSent = False 
    for elem in skypeClient.ActiveChats: 
     if len(elem._GetMembers()) > 2 and elem.Topic == topic: 
      elem.SendMessage("SomeMessageHere") 
      messageSent = True 

    if not messageSent: 
     for chat in skypeClient.BookmarkedChats: 
      if chat.Topic == topic: 
       chat.SendMessage("SomeMessageHere") 
       messageSent = True 

    return messageSent 
+0

看起来不错,但唯一的问题是,我有多个2成员组,我需要它发送到特定的一个或者使用组名称或斑点,以检查它是否是正确的。 – Ryflex

+1

您是否拥有该组用户的手柄? –

+1

您可以使用什么来识别组?你有blob,主题,成员的句柄吗? –