套件:SkPy 0.10.5
取 chat room id 使用以下程式碼,之前使用都沒問題,最近常常需要點很多次才能取得正確的 id
def search_sk_id(self, target_room):
self.GetSkype()
skc = SkypeChats(self.sk)
#取得最近的對話
for each_chat in skc.recent().values():
#取群組名稱,否則取談話對象名稱
chat_room = getattr(each_chat, 'topic', str(getattr(each_chat, 'user').name))
#如果跟目標名稱一致,回傳聊天視窗id
if chat_room == target_room:
return getattr(each_chat, 'id', 0)
return 0
翻了一下 api 文件,覺得應該是死在 recent(),因為這個 recent 到底是一秒鐘,還是一分鐘,甚至是一小時並沒有明確的寫到,是個黑箱。
還好目前沒有動態取聊天視窗 id 的需求,都是固定的聊天視窗,上線前取得 id 設定完即可。
若真的透過 api 取不到,就使用瀏覽器 devTool 找 id 囉~
參考資料:
https://skpy.t.allofti.me/reference/api.html#skpy.chat.SkypeChats.recent