Add new Player setting(disabled by default) That would force they player to interact with the same shop twice(in the same way) to perform a trade.
Interaction 1 would send the player a message detailing the trade and add the shop to a Map<Player, Tuple<ShopLocation, Interaction>> with the interaction made.
Interaction 2 would remove the shop from the map and perform the action IF the action and ShopLocation match ELSE it will replace the existing Tuple with a new one contains this shops location and Interaction.
This map never needs to be saved to file and would be created on Startup
Optional: A-Sync Task Timer or a Cache object with auto-remove will remove any interactions that persist for more than n-seconds(configurable)
IF
the action and ShopLocation matchELSE
it will replace the existing Tuple with a new one contains this shops location and Interaction.A-Sync Task Timer
or aCache object with auto-remove
will remove any interactions that persist for more than n-seconds(configurable)