audio streaming app plyr.fm
at main 45 lines 1.3 kB view raw
1"""send a bsky DM when a deploy fails.""" 2 3import os 4 5from atproto import Client, models 6 7 8def main() -> None: 9 handle = os.environ["NOTIFY_BOT_HANDLE"] 10 password = os.environ["NOTIFY_BOT_PASSWORD"] 11 recipient = os.environ["NOTIFY_RECIPIENT_HANDLE"] 12 13 # context from GHA 14 run_id = os.environ.get("GITHUB_RUN_ID", "unknown") 15 repo = os.environ.get("GITHUB_REPOSITORY", "unknown") 16 ref = os.environ.get("GITHUB_REF_NAME", "unknown") 17 18 client = Client() 19 client.login(handle, password) 20 21 # resolve recipient handle to DID via the API 22 profile = client.app.bsky.actor.get_profile({"actor": recipient}) 23 recipient_did = profile.did 24 25 dm_client = client.with_bsky_chat_proxy() 26 dm = dm_client.chat.bsky.convo 27 28 convo = dm.get_convo_for_members( 29 models.ChatBskyConvoGetConvoForMembers.Params(members=[recipient_did]) 30 ).convo 31 32 url = f"https://github.com/{repo}/actions/runs/{run_id}" 33 message = f"deploy failed on plyr.fm\n\nref: {ref}\nrun: {url}" 34 35 dm.send_message( 36 models.ChatBskyConvoSendMessage.Data( 37 convo_id=convo.id, 38 message=models.ChatBskyConvoDefs.MessageInput(text=message), 39 ) 40 ) 41 print(f"sent deploy failure DM to @{recipient}") 42 43 44if __name__ == "__main__": 45 main()