I need my NFT smart contract to accept USDT instead of ethereum

Hello everyone, i was commissioned an ERC721 smart contract that needs to accept payments in USDT instead of ethereum when a user mints an NFT.

i would ideally have msg.value be in USDT instead of eth, so that i can check the amount or maybe listen for a transfer event on the contract, please give me your suggestions.

the contract is basically ready i just need to sort out that aspect, so how do i make it so that the contract accepts USDT instead of eth for payments?

To many ways to do it, I would first make the user sign authorizing the contract to transfer ustd on his behalf, and then depending on what the nft is worth, I make the discount, another way to do it is by configuring the call when the user signs and passing a parameter for value referring to ustd's contract, also nft's minting function, can't be allowed to receive ethe