Both the on notice event and the ctcp events correctly supply both # and $chanwhen the target of the event is a channel. Obviously if someone /notice's or /ctcp's you individually then it cannot provide # or $chan because no channel is linked to the event or in any way relevant to it. The same goes for whisper (by which I assume you mean private messages).
If you want to know the channels you share with a nick you can always use $comchan() to find all the channels you're in together.
Spelling mistakes, grammatical errors, and stupid comments are intentional.