I'm trying to write a bot that, for starters, listens and logs every message said in a cloud-based chat -- that is, a chat where the command \get name
returns a string with the prefix 19:
, e.g. 19:f0ddd8dbc5b64372a2dd1de9f37f8689@thread.skype
in my specific case.
However, I cannot get Skype4Java to find any of the cloud-based chats I'm participating in.
Group[] groups = Skype.getContactList().getAllGroups();
The above returns an empty list, even when there are P2P groups present.
Chat[] chats = Skype.getAllChats()
The above returns all chats (P2P group or individual) except for cloud-based group chat.
Is Skype4Java not able to interact with cloud-based chats? I know Skype4Py (the Python equivalent) isn't able to. (Inappropriate follow-up question: are there any APIs that do interact with cloud-based chats?)
(Edit: This is a self-answer after hours of mostly fruitless research. Putting it up in the hopes that it'll help some other newb bot writer.)
Skype4Java, Skype4Py, and most other API wrappers cannot interact with cloud-based chats.
There is no workaround other than recreating the desired chat with /createmoderatedchat
and adding all the participants from the previous.
The only alternative I could find is Skypeweb, a library that's part of Skype4Pidgin. It does work with cloud-based chats, as far as I can tell. However, there is very little documentation.
This article from the Bitlbee Wiki may be helpful. It describes how to incorporate SkypeWeb into Bitlbee.