Как мне отправить сообщение на групповой разговор с Skype4Py в Python
Я пытался заставить свой сценарий отправить сообщение на групповой разговор в Skype с помощью библиотеки Skype4Py, единственный способ, которым я в настоящее время могу отправлять сообщения, - определенным пользователям.
import Skype4Py
Skype = Skype4Py.Skype()
Skype.Attach()
Skype.SendMessage('namehere','testmessage')
Кто-нибудь знает, как я могу изменить свой код, чтобы отправить сообщение на групповой разговор?
1 ответ
Следующий маленький скрипт должен работать. (Предполагая, что у вас уже открыт групповой чат)
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