The badge is a slightly updated version of https://hackaday.io/project/182568-badge-for-supercon6-november-2022 and was the namebadge of the conference.
The telephone dial is pure mechanical - two switches with a common ground. One switch closes if the dial is not at its rest point, the other switch pulses when the dial returns with one pulse per digit.
Electronically thus the 3 wires were soldered to the IO connector such as the common wire was grounded by an output port bit 3 and the two switched wires were to input ports bit 0 and 1, just adjacent.
The real hardware challenge was the "case". Solved by finding a cardboard piece and a roll of masking tape. I had a sharp knife to cut holes and pieces, including stiffernes and covere it all in tape.
The rest is software. See files.
As noted in the first log, I have done something similar with an Arduino.
Congratulations! Staying up until 3AM is part of the game, but sleep never hurts. :)
Thanks for writing it up.