Publishers publish, and subscribers subscribe. You might also hear a few alternative terms:
Let's further separate the "subscribing" logic from the "distribution" logic.
Complete the doBattles function. It takes a user and an array of Moves. It should return an array of pieces, Piece[], that represents pieces in battle.