You are browsing as a guest. Sign up (or log in) to start making projects!

Mission Control Bot

  • 1 Devlogs
  • 2 Total hours

A Mission Control bot for Slack

Ship #1

Mission Control - a NASA/space command centre for Slack

Mission Control is a Slack bot that pulls real space data straight into the workspace. Four slash commands, all prefixed mc:
/mc-apod - NASA's Astronomy Picture of the Day, the actual image with a trimmed caption and credit
/mc-iss - live position of the International Space Station: latitude, longitude, altitude and velocity, with a link to see it on a map
/mc-mars - the freshest raw photos off the Perseverance rover
/mc-crew - everyone who's currently in space right now, with their craft and agency

Felt very on theme for a NASA-backed event, so I leaned all the way into it. Everything's built with Block Kit - headers, image blocks, context lines - and posts in-channel so the whole feed gets the photos, not just plain text.

What was challenging: the APOD command. It kept failing intermittently with a 503 and I couldn't work out why at first, since the other three commands were fine. Turned out NASA's endpoint just has transient hiccups. The fix was adding retry-with-backoff to the HTTP layer so a one-off upstream wobble retries quietly instead of showing an error. The other detour was /mc-mars: the classic api.nasa.gov Mars photos endpoint is dead right now (returns a Heroku "no such app"), so I switched to pulling Perseverance's latest raw images straight from NASA's own mars.nasa.gov feed.

What I'm proud of: that it actually renders real space imagery live in Slack and feels like a little mission console. Watching the ISS tick along at 27,000+ km/h, or APOD dropping a full nebula photo into the channel - it came together into something I like actually using. To test it: it's live in the Hack Club Slack - just type any of the commands in a channel. Try /mc-iss first and you'll get the live position right away. /mc-crew shows who's in orbit, /mc-apod drops today's NASA photo, /mc-mars pulls the latest rover shots!

Try project → See source code →
Open comments for this post

2h 4m 20s logged

Mission Control - Devlog #1

Well, I messed up with the projects, so I had to delete my devlogs. The actual time logged for this 1st devlog was 29m 44s
I Started creating a Slack bot called Mission Control.
The idea is a little space-themed command centre that pulls NASA + ISS data right into Slack.
Felt very on theme for a NASA-backed event so I went for it.
I’ve set up the Slack app from scratch, grabbed the two tokens, and registered four slash commands, all prefixed mc- so they don’t clash with the dozen other bots already in the workspace: /mc-apod → Astronomy Picture of the Day /mc-iss → live ISS position /mc-mars → Mars rover photos /mc-crew → who’s actually in space right now.
Right now every command just replies with plain text. I wanted the whole thing wired end-to-end and testable first, so if something breaks later I know it’s the API layer. Tested all four in Slack and they all replied (screenshot below). So commands register, the bot connects, and Slack and the bot are talking. Next up: splitting the commands into their own modules and actually hitting the APIs - NASA’s APOD, wheretheiss.at for the ISS, the Mars rover photos endpoint, and rebuilding the replies with Block Kit so they show real images instead of placeholder text

Mission Control - Devlog #2

All four commands now reach live data and render proper Block Kit instead of placeholder text, so the replies actually look like something now.
Each command’s wrapped in try/catch too, so if an API has a wobble it posts a friendly note instead of taking the whole bot down.
/mc-iss is my favourite right now, it pulls the live ISS position from wheretheiss.at and lays it out : latitude, longitude, altitude, velocity, plus whether it’s currently in daylight or eclipsed. /mc-crew lists everyone actually in space right now with their role, agency and craft. /mc-mars gave me a detour. The classic api.nasa.gov Mars photos endpoint is dead at the moment (just returns a “no such app” error), so I switched to pulling Perseverance’s freshest raw images straight from NASA’s mars.nasa.gov feed instead. The one that’s not happy yet is /mc-apod. NASA’s Astronomy Picture of the Day is the one I most want working since it’s the best output, but right now it’s hitting the catch block: “Couldn’t reach NASA’s picture of the day just now.” So the error handling is doing its job, but something in that request path is off.

Actual time logged - 54m 19s

Mission Control - Devlog #1

Well, I messed up with the projects, so I had to delete my devlogs. The actual time logged for this 1st devlog was 29m 44s
I Started creating a Slack bot called Mission Control.
The idea is a little space-themed command centre that pulls NASA + ISS data right into Slack.
Felt very on theme for a NASA-backed event so I went for it.
I’ve set up the Slack app from scratch, grabbed the two tokens, and registered four slash commands, all prefixed mc- so they don’t clash with the dozen other bots already in the workspace: /mc-apod → Astronomy Picture of the Day /mc-iss → live ISS position /mc-mars → Mars rover photos /mc-crew → who’s actually in space right now.
Right now every command just replies with plain text. I wanted the whole thing wired end-to-end and testable first, so if something breaks later I know it’s the API layer. Tested all four in Slack and they all replied (screenshot below). So commands register, the bot connects, and Slack and the bot are talking. Next up: splitting the commands into their own modules and actually hitting the APIs - NASA’s APOD, wheretheiss.at for the ISS, the Mars rover photos endpoint, and rebuilding the replies with Block Kit so they show real images instead of placeholder text

Mission Control - Devlog #2

All four commands now reach live data and render proper Block Kit instead of placeholder text, so the replies actually look like something now.
Each command’s wrapped in try/catch too, so if an API has a wobble it posts a friendly note instead of taking the whole bot down.
/mc-iss is my favourite right now, it pulls the live ISS position from wheretheiss.at and lays it out : latitude, longitude, altitude, velocity, plus whether it’s currently in daylight or eclipsed. /mc-crew lists everyone actually in space right now with their role, agency and craft. /mc-mars gave me a detour. The classic api.nasa.gov Mars photos endpoint is dead at the moment (just returns a “no such app” error), so I switched to pulling Perseverance’s freshest raw images straight from NASA’s mars.nasa.gov feed instead. The one that’s not happy yet is /mc-apod. NASA’s Astronomy Picture of the Day is the one I most want working since it’s the best output, but right now it’s hitting the catch block: “Couldn’t reach NASA’s picture of the day just now.” So the error handling is doing its job, but something in that request path is off.

Actual time logged - 54m 19s

Replying to @Kvin

0

Followers

Loading…