Раз в час запускайте скрипт и отправляйте сообщение, особого смысла нет держать процесс с одним слип в час.
Ну или while(true) sleep(1hour) and send messages
Список пользователей уже имеется?
Есть разные варианты, лучше ,чем передавать длину сообщения, я еще не видел
Если параллельно может идти несколько кусков от разных сообщений, нужно добавлТь ид целового сообщения и длины каждого из кусков. Это минимум.
bot.send_message(message.chat.id, 'Температура в ', city, ': ',temp , '°C')
запятые разделяют аргументы(параметры), и что там за параметры в этой функции?)
signs передается как копия или по ссылке?
Под отладчиком гляньте,а код - это хорошо, взял и запустил, (пока не могу)
В этом коде не вижу перебор разной последовательности этих знаков