hm, so, the way Solidity/EVM contracts are designed, you can define an event handler receive() for when native tokens are received, but you can't define an event handler for receiving ERC20 tokens, which are themselves smart contracts.
when you "send" ERC20 tokens to an address (a wallet or contract), what you're really doing is telling the smart contract that handles the token to change its internal state to reflect a transfer of balances.
but if you're making a smart contract that handles third-party tokens, there's no standard interface for being notified of that.
which leads me to wonder how you are supposed to update the internal balance. you need an event for that.