Если бот работает на вебхуках, просто запусти один экземпляр бота, а 10 токенам ботов сделай setWebhook на него. Тогда для тебя это будет выглядеть практически как один бот.
Ботов включи каждого в свой чат. Если ботов надо прям различать - передавай номер бота в url вебхука.
g_Innaro, cron запускает просто то что его попросишь в заданное время. Например, каждый день в полдень. Соответственно, просто запускаем скрипт, который каким-то образом (из базы, очевидно, лучше всего) достаёт что кому разослать и рассылает.
База в любом случае нужна - надо же хранить где-то список всех этих счётчиков и кому по ним слать сообщения?
Это как спрашивать есть ли автоматизированные покупки автомобильных аккумуляторов, чтобы купил и аккумулятор сам оказался в автомобиле, заменив старый. В реальном мире аккумулятор меняют вручную, ибо автоматизировать довольно сложно.
Чтобы это происходило автоматом, нужно прям очень сложную систему соорудить. Скажем, автомобиль из облака получает уведомление, что на его идентификатор получен аккумулятор. Автомобиль записывается в очередь на замену в ближайший техцентр в временное окно, когда хозяин им не пользуется, затем автопилотом приезжает туда, ему робот меняет аккумулятор. Как вариант, наоборот робот едет к месту нахождения автомобиля и меняет ему аккумулятор на месте. Чтобы всё это работало как часы, надо проделать огромную работу. Причём вряд ли речь будет о решении уровня "купить комплект устройств и подключить к электричеству", там нужно будет построить целую инфраструктуру, которую надо будет обслуживать, чинить, улучшать...
И с VPN нужно вот примерно то же самое. Есть VPN - это приложение, которое запускается с неким конфигом. Есть инфраструктура, на которой это запускается - при небольшом количестве трафика может быть один сервер, при большом - кластер серверов, в том числе покупаемых в облачных хостерах по API автоматически по мере необходимости. Нужна инфраструктура раздачи/продажи ключей. Нужны механизмы обновления конфигураций VPN-приложений в инфраструктуре. Нужны механизмы раскатки обновлений, расширения инфраструктуры (деплой новых серверов итд). Нужны интерфейсы для поддержки, чтобы ночью оператор по обращению клиента мог просмотреть его информацию, перевыпустить ключ, перезапустить его экземпляр VPN-сервера итд итп без участия крутого технического специалиста.
Всё это - сложные индивидуальные решения, которые каждый сервис строит для себя под свои нужды, инвестируя в это усилия. Даже если кто-то подобным и поделится (что уже довольно редкое дело), это ещё надо не просто выложить на гитхаб, но и написать подробные инструкции-документации, отладить на разных дистрибах Linux, сделать приличные конфигурационные файлы, обрабатывать баги и хотелки от пользователей. Сама по себе публикация даже тривильного открытого кода - это всегда усилия.
То, что уже существуют решения типа 3x-ui - огромный шаг - но всё ещё не однокнопочное решение. Там можно по-разному установить, по-разному настроить, разные фичи могут требовать дополнитеьных усилий для того, чтобы они вообще работали... Всё это - лишь кирпичики конструктора, из которого каждый собирает комбайн под свои условия.
Venddetaqna, попытки обмануть белые списки - это только полумера. Они будут работать всё хуже и хуже вплоть до ограничений чисто по IP, когда ничто, неподконтрольное мусорам, не сможет попасть в белый список.
historydev, если бы автор мог поменять базу, он бы поменял её на MS SQL Server с поддержкой CDC, которого ему и не хватает в SQL Express, что легко понять из его вопроса.
Вадим, например, добавить поле updated_at в нужные таблицы. При выполнении insert/update выставлять триггером текущее время. Я MS SQL не знаю, но триггеры там стопудово должны быть (погуглил - реально есть).
Каждый "бэкап" у нас есть "время прошлого бэкапа" и можно сделать select .. where updated_at>="время прошлого бэкапа". Получится, что мы заберём из базы только изменившиеся строчки.
Если приложению будет мешать лишнее поле в базе (что на самом деле признак кривизны рук разработчика - ненормально использовать SELECT * в коде), то можно вместо этого класть id записи и время в отдельную таблицу. Ещё могут быть сложности, если приложение удаляет строки - их тоже надо учитывать.
Кстати прям сейчас гугл спросил "mssql получить время изменения строки" и там ИИ прям примеры триггеров предлагает.
В результате можно написать скрипт или небольшое приложение, которое на точке может снять из базы только затронутые данные. Возможно, они сами по себе будут небольшими. Или же их можно не хранить, а заливать в онлайне - берём из базы набор данных, отправляем на сервер. Например, в виде csv-файлов по 10 тыс. строк.
Получив только изменившиеся данные, их нужно будет скриптом/приложением влить в основную базу. В принципе, если хорошо сделать, можно довести это до автоматизма либо поручив запускать в какой-нить момент, например, учёта... Но да, придётся что-то попрогать, поотлаживать...
Я так понимаю, речь видимо идёт про учёт товаров в торговых точках, чтобы иметь всю актуальную информацию по товарам, запасам, продажам итд.
Вообще, я бы ещё попробовал поискать, может есть готовые инструменты такого рода для "псевдорепликации" данных?
Когда уже есть приложение, которое работает с конкретной базой, достаточно странно предлагать заменить базу. Если бы автор имел возможность вкладывать время и усилия в разработку, он бы и сам разработал новое приложение, удовлетворяющее его потребностям.
Вадим, можно делать бэкапы баз, сливать их в одно место и там уже собирать в одну базу изменения.
Если разработчики приложения доступны или если есть хоть какие-то навыки программирования - дорабоать приложение, чтобы оно само делало инкрементальные обновления по запросу (хотя бы по принципу updated_at>время_предыдущей_дельты) или добавить самому на триггерах выявление изменяющихся полей. В общем, варианты есть.
Refguser, пойми, если бы можно было просто показать рекламу и окупить любые расходы - не существовало бы такой гигантской проблемы окупаемости сложных проектов. А она есть. А ты погуглил "минуту рекламного времени" и возомнил своё случайное мнение исчерпывающим экспертным заключением по теме.
Увы, это несерьёзно. И ты совершенно напрасно думаешь, что можно громко хлопнуть дверью и сказать последнее слово.
Programmir
рекомендую абстрагироваться пока от игровых движков. Для начала сделать бумажные квадратики с названиями фигур и поиграть с друзьями. Возможно, вы за 5 минут найдёте имба-стратегии, которые потребуют кореного изменения правил.
Вместо бумажки создай таблицу 8x8 в Google Docs и вместе с друзьями пишите в клетки названия фигур и цвет.
Визуализация такой игры - вообще довольно мелкая проблема. Если хорошо написать абстрактную часть (влючая бота, играющего в игру против игрока - это явно будет самым сложным и интересным), то визуализировать её можно хоть в браузере, хоть в настольном приложении, хоть в мобилке, хоть в curses.
Refguser, есть стоимость рекламной минуты, которую бизнес, инвестирующий в рекламу, хочет отбить.
А ещё есть стоимость производства контента. Зарплата. Аренда помещений. Оборудование. Электричество и другие расходы. Если транслировать чужой контент - то ещё и лицензионные отчисления. И всё это должно сводиться в баланс.
Просто посмотреть на цену рекламной минуты и возбудиться - это детский сад.