In general, you can send tokens to any address and it will go through. The only exceptions are if the token implements
safeTransfer functionality, which first makes sure that the receiving address is capable of handling the tokens - but most tokens don't include such safety measures.
Furthermore, contracts have no idea when they have received tokens, and therefore there is no "token received event".
The problem with detecting token transfers is that a token transfer is not an explicity transfer at all - it's simply a function call to the token contract which instructs the contract to modify its internal ledger which says which address owns how many tokens. So the token contract doesn't consult the receiver address at all and doesn't inform anyone (on-chain) that an address has received tokens.