I use mautrix. It creates a matrix space where all your discord stuff goes, and within that it will create spaces for each server you manually choose to bridge.
DMs also go into a DMs space. DMs are bridged automatically, but each server you want has to be added with a command.
Looking at those three, appservice is old, and out of your element does not do puppeting (meaning it bridges discord-matrix chat rooms, rather matrix-discord accounts), making mautrix the best option IMO.
If you are looking to make a discord server you run accessible on matrix, out of your element may be better.
For using your own discord account through matrix, mautrix is the obvious choice.