Скорее всего при неправильном городе вызов
observation = mgr.weather_at_place(message.text)
сгенерирует исключение. Судя по
докам, это будет либо ParseResponseException либо APICallException. Если бы ты озаботился привести полное сообщение об ошибке, можно было бы сказать точно.
В любом случае, читай про
обработку исключений. Тебе нужно завернуть вызов в блок try, и если возникла ошибка - сообщить пользователю.
Это я понимаю. Я не сам писал бота это ролик из ютуба.
Если понимаешь, учи основы питона по-старинке - учебник и упражнения. По ютубу научишься только повторять, не понимая смысла. Сначала - основы, потом уже бросайся писать ботов.