Stop send btc, only reciev
Bitcoin Core
So far as I know, there isn't really good support for this in Bitcoin core.
The safest way is to remove your private key(s) from the wallet.
You could archive your existing wallet (and test full recovery carefully) then set up a watch-only wallet using importaddress
See https://bitcoin.org/en/developer-reference#importaddressimportaddress
However note that this does not generate new receiving addresses for you, If you use a new receiving address for each transaction (as you should) than you'll have to generate each address externally and import it into the watch-only wallet.
Other wallets may have better support for this.
Offline Wallets
You don't actually need a wallet to receive payments, so long as you don't mind
- the consequent loss of privacy from using a single receiving address.
- the need to trust a third party blockchain explorer to monitor payments received.