audio streaming app
plyr.fm
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()