Doplis01, send_message_to_creator обрабатывает все сообщения бота, в том числе сообщения от создателя. Логично или отдельно обрабатывать сообщения от создателя:
Далее, надо не просто сообщать пользователю, что его сообщение переслано, но и реально пересылать (bot.forward_message). И при ответе посылать его в message.forward_from.id. Либо, как вариант, запоминать где-то (например, в словаре) связку forwarded_message.message_id и original_message.chat.id, чтобы при ответе можно было по id сообщения определить, в какой чат его отправить.
Это просто моноширинный шрифт в сообщении. Часть сообщения с ним при клике сразу копируется в буфер, это позволяет передавать всякие токены, образцы команд итд итп в сообщениях, чтобы пользователям было проще копировать.
В общем случае нельзя достоверно определить расположение IP-адреса. Даже информация в whois необязательно отражает реальное расположение - а ведь дампы региональных регистров вполне себе доступны. Даже обновляемые платные базы типа GeoIP не всегда дают верную информацию.
Если нужно определить для конкретного оператора его сетки, то да, у него обычно одна или несколько AS, которые можно выяснить и по которым получить информацию по адресам с помощью того же bgp.he.net, упомянутом в одном из ответов ниже. Но получить список всех операторов со всеми сетями - это очень сложно. Поэтому-то "разные сайты" и дают "не совсем актуальные данные".
Насколько помню, раньше у них даже были на видном месте инструкции по созданию частного зеркала, но сейчас не нахожу, вероятно как раз из-за CF не поддерживают такой вариант.
Если это для себя и друзей, то проще использовать VPN или прокси, причём в прокси можно даже автоматически заворачивать только отдельный список сайтов с помощью proxy.pac.
Не надо пытаться руками ставить системные библиотеки в старую систему без обновлений! Можно получить полностью убитую систему, которую потом откачать будет не проще, чем установить с нуля.
Можно пытаться ставить через docker/snap/flatpak/appimage, в крайнем случае, но правильнее обновиться.
Adamos, "вчерашние" процессы при mpm-prefork это более чем нормально. Запущено ндцать воркеров, они обрабатывают запросы. В зависимости от настроек, worker перезапустится при выполнении некоего лимита на количество запросов. И количество воркеров тоже может адаптироваться под нагрузку. Я бы начал с уменьшения их максимального числа (ServerLimit), сделать лимит например 30, чтобы было точно меньше 40.
Это неправда, вполне себе кэшируются, и история тут ни при чём. Практика показывает, что 301 редирект вполне может кэшироваться очень даже хорошо. Например, был печальный опыт с приложением, которое забирало мобильный PUSH-контент по ссылке, которая при некоторых условиях возвращала 301, и когда это пофиксили, некоторые мобилки ещё через год помнили этот редирект.
Имя, если книг действительно "несколько", то проще вручную выбрать страницы с оглавлением и распознать, затем скопировать это в таблицу и причесать в вид навроде "раздел - диапазон страниц" и после этого скрипт написать для вызова какого-нить ghostscript/pdftk/итдитп, который выдернет нужные части файлов. Картинки можно попробовать конвертацией doc в html. Но как правило всё равно где-нибудб будет хрень и потребуется вручную подправлять: выкидывать картинки дефектов печати или загибов страниц, неправильно определённые картинки итд итп.
Вообще FineReader правильнее использовать в полуручном режиме. Сначала прогоняем файл с распознанием областей, потом просматриваем его и исправляем где он определил неправильно (например, увидел текст вместо таблицы или наоборот, или двухколоночный текст посчитал одноколоночным). Потом прогоняем финальное распознавание текста и уже тогда текст вычитываем, исправляем ошибки (благо оригинал параллельно виден). При этом получаем полноценную текстовую версию сканированного документа, а не фиг знает что с неопределённым количеством ошибок.
Полученный результат можно превращать хоть в электронную книгу, хоть в текст на сайте, хоть печатать в нужном формате...
Или сделать отдельный обработчик выше этого с более узким фильтром:
Далее, надо не просто сообщать пользователю, что его сообщение переслано, но и реально пересылать (bot.forward_message). И при ответе посылать его в message.forward_from.id. Либо, как вариант, запоминать где-то (например, в словаре) связку forwarded_message.message_id и original_message.chat.id, чтобы при ответе можно было по id сообщения определить, в какой чат его отправить.