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