Потому что вы буквально проверяете наличие юзернейма (if message.chat.username:) и выполняете код только если он есть
Ну и для команд есть специальный декоратор. Чтобы не делать if '/start' == message.text: есть @bot.message_handler(commands=["start"])