What is the fee per
vbyte on your transaction? You can find out by inputting your transaction ID in to this website:
https://blockchair.com/. The likelihood is you simply paid too low a fee. The mempool has been periodically emptying over the last few days, but never below 2 sats/vbyte, so if you paid 1 or 2 sats/vbyte then you will still be waiting for confirmation.
You have a couple of options in this case. You can use "replace by fee" if you enabled it on your transaction to bump the fee to a higher value so it will confirm faster. Alternatively, your friend can use "child pays for parent" and simply spend the unconfirmed transaction with a much higher fee. When his new transaction is confirmed, your currently unconfirmed transaction will confirm at the same time. Further, if the transaction had a change output that you sent back to yourself, you can also use "child pays for parent" by spending this change output with a much higher fee.