Содержание
Есть множество способов получить данные о человеке: поискать его по социальным сетям, сделать поиск по Google или Яндекс, проанализировать доски объявлений и многое другое. Но если делать это собственными руками, то поиск превратиться в адский труд, потому что это долгая, рутинная и кропотливая работа. И нет никаких гарантий, что она увенчается успехом.
Гораздо легче и эффективнее использовать для этого специальные инструменты, которых, надо заметить, сегодня стало очень много. Это и софт, который распространяется на пиратских правах за большие деньги, и бесплатные программы, которые умеют совершать несложные алгоритмы поиска, и форумы, на которых за деньги или бесплатно сливают персональные данные и многое другое.
В данной статье мы рассмотрим, каким образом через бота для Телеграм можно найти информацию о человеке.
Содержание
Глаз Бога — смотрящий бот из Телеграм
Первый бот скромно именуется Глаз Бога и разработчики позиционируют его как самый лучший бот с персональной информацией о людях. Возможно, так и есть, потому что функций у него очень много. И действительно разработчики подошли к своему творению серьёзно и основательно, у них даже есть свой сайт с интересным дизайном и организованна служба поддержки. А на самом сайте есть предупреждение о том, что сервис представляет собой лишь поиск по открытой информации людей и не нарушает законодательства России, что, конечно же, успокаивает. Бот обрабатывает около 40 источников информации и санкционировано получает из них информацию. По заявлению разработчиков, око Божье объединяет в себе функции всех аналогичных инструментов.
Каким образом работать с ботом для поиска информации о человеке:
- Перейдите в браузере на сайт Глаз Бога https://eyegod.info и нажмите на кнопку «Перейти в бот«. Это можно сделать на любом устройстве, где установлен Telegram — на мобильном или компьютере.
- Бот откроется в приложении Телеграм. На стартовой странице вы увидите краткое описание функций бота. Нажмите кнопку «Старт«, чтобы начать.
- Вы увидите более подробную информацию о том, что умеет бот. И всё. Теперь бот работает и им можно пользоваться.
Для того, чтобы узнать информацию о человеке с помощью этого бота, следует просто отправить ему соответствующее сообщение.
Давайте рассмотрим подробнее, по каким данным можно найти здесь человека:
Способы поиска: | Пояснение: |
---|---|
Поиск можно сделать по имени и дате рождения. | Для этого боту следует отправить имеющиеся данные — имя и фамилию, можно дополнить информацию отчеством и датой рождения, тогда поиск будет более точным. Формат сообщения такой: Устимова Ольга Сергеевна 29.03.1983. |
Можно поискать человека по государственному или идентификационному (VIN) номеру автомобиля. | Для этого нужно отправить боту номер: М999ММ99 (для России), ВО4561АХ (для Украины) или ХТА21150053965897 (VIN номер). Номер телефона может быть распознан, если вы отправите боту его качественную фотографию. |
Поддерживается поиск по номеру телефону (79998887777) электронной почте (name@mail.ru), адресу (Москва, Тверская, д 12, кв 1), идентификатору пользователя в Telegram (id713052, @anton). | В скобках указан формат сообщения, в котором нужно отправить данные боту. |
С помощью этого бота можно искать не только людей, но и юридических лиц, в том числе и ИП. | Для этого нужно знать ИНН, и ввести его в таком формате: /inn 7702232171. |
Можно отправить боту ссылку на профиль ВКонтакте. | Например, https://vk.com/id1. В результате можно получить данные о владельце профиля — почту и номер телефона. |
Бот умеет работать и с IP, для этого нужно отправить ему нужный адрес в формате 8.8.8.8. | В результате вы получите информацию о его географическом положении либо о домене, если он принадлежит сайту. |
Можно получить данные о владельце криптокошелька Биткоин. | Для этого нужно отправить адрес, например, 1AmajNxtJyU7JjAuyiFFkqDaaxuYqkNSkF. |
Человека в этом Телеграм боте можно найти даже по фото. | Для этого надо отправить портретную фотографию хорошего качества вложенным файлом. |
Можно отправить этому боту свою геолокацию. | В результате можно получить список людей, которые присутствуют рядом, и их данные. |
Бот умеет также и распознавать текст по голосу. | Поэтому, если нет времени писать, то можно наговорить данные. |
Как видите, функций у Глаза Бога очень много, и есть даже дополнительные полезности, вроде распознавания по фото и голосу. Какие данные предоставит бот в результатах поиска? Все, которые у него имеются о найденном человеке: имя, номер телефона, электронная почта, страница во ВК, логин в Viber, Telegram, номер автомобиля и другое.
Это условно-бесплатный инструмент. Бесплатно можно попробовать его, и получить некоторые данные, но самая «вкусная» информация окажется доступной в платном тарифе.
Поиск информации о человеке в Facebook
Следующий бот в Телеграм намного проще и полностью бесплатный. Он умеет искать в базе Facebook по номеру телефона.
- В смартфоне или на компьютере перейдите по этой ссылке https://t.me/GetCont_bot, и бот откроется в вашем приложении Telegram. Нажмите кнопку «Старт».
- И вы увидите инструкцию по работе с ботом: достаточно отправить ему номер телефона в формате +7 000 111 22 33 или +70001112233 и в результате вы получите ссылку на страницу Facebook человека, которому принадлежит данный номер, если он присутствует в базе бота.
И это всё, никаких дополнительных функций здесь нет.
Это вам будет интересно: t.me что за сайт.
Два простых бота для поиска по номеру телефона
Два бота, созданные разными разработчиками, но очень похожие — умеют искать информацию о человеке по его номеру телефона. Работает полностью бесплатно.
Какие основные функции этих ботов для поиска информации о человеке и чем они отличаются от робота Телеграм:
- Первый называется Getcontact, и подключить его к Telegram можно по этой ссылке https://t.me/GetCont_bot. Нажмите на «Старт» после перехода по ссылке, и вы увидите предложение ввести номер телефона для поиска в формате +70001112233. Результат поиска будет через несколько секунд и в нём будут данные об операторе и регионе владельца телефона.
- Второй бот чуть более функциональный, называется ТелПоиск и находится по этой ссылке. Чтобы подключить бота, перейдите по ссылке и нажмите «Старт». И вы увидите информацию о функциональности этого бота. Отправьте ему номер телефона в формате +70001112233, и через несколько мгновений вы получите результат поиска, в котором будут содержаться данные о социальных сетях, мессенджерах, платёжных сервисах, объявлениях на досках, где фигурирует это номер.
Способ найти данные об автомобиле
Этот бот специализируется на данных об автомобилях. Является условно-бесплатным инструментом, в бесплатном тарифе предусмотрено несколько проверок, а затем придётся оплачивать подписку. По отзывам некоторых пользователей, работает достаточно быстро и точно.
Перейдите по https://t.me/avinfobot и нажмите «Старт«. Вы увидите краткое описание бота и познакомитесь с его функциями.
Бот умеет принимать и отображать такие данные:
- фамилию, имя и отчество;
- номер телефона и электронная почта;
- государственный и VIN номера автомобиля;
- ссылка на ВК-профиль;
- IP адрес владельца автомобиля;
- кроме того, есть возможность распознать человека по отправленному боту фото и получить о нём вышеперечисленные данные.
Как было сказано выше — это условно бесплатный сервис.
По некоторым данным, этот робот получает данные из базы объявлений Авито, где торгуют автомобилями. Сведений о санкционированном доступе к этой базе нигде не присутствует.
В видео будет рассмотрено, как работают боты для приложения Телеграм, которые показывают всю информацию о человеке.
Главная»Защита и безопасность
Telegram-бот «Глаз Бога»</figcaption>
Для отправки команд бот требует подписаться на собственный канал, но даже это не гарантирует результата. По телефону «Глаз Бога» выдает название оператора и его регион (видимо, для тех, кто не умеет определять эти данные на глаз), возможное имя (я ввел несколько телефонных номеров — имена совпали).
Еще он может найти почтовые адреса (вероятнее всего, по базе администраторов доменов), страницу «ВКонтакте», аккаунт «Телеграм», WhatsApp, число интересовавшихся персонажем до вас. Но эту информацию бот предоставит за 30 рублей. То же самое касается поиска по номеру автомобиля: бесплатно бот показывает только регион (который можно определить и так), а за тридцатку предлагает скачать отчет «Автокода». При этом данные об автомобиле по его номеру при желании нетрудно отыскать в этих ваших интернетах бесплатно.
Если вы введете адрес электронной почты, бот любезно покажет вам логин (то, что до символа @
) и домен (то, что после @
) — это особо ценная информация! Также вам предложат купить адрес привязанной к этому мылу странички «ВКонтакте» и связанные с email пароли из какой‑то слитой базы. По имени бот ищет только номер телефона в заданном регионе, находит неправильный и для его просмотра предлагает купить подписку.
В общем и целом, польза от этого бота показалась мне весьма сомнительной: инфу, которую «Глаз Бога» отдает бесплатно, можно при желании нагуглить и без него, а платная информация скудна и не всегда достоверна.
AVinfo
Бот ищет по слитым базам пароли, соответствующие адресам электронной почты, логинам или номеру телефона. Бесплатно бот показывает только часть обнаруженных паролей, а за полной версией отправляет на сторонний сайт, где посетителю с ходу предлагают оплатить подписку.
Заключение
Мои эксперименты показали, что боты для поиска персональных данных в целом могут быть полезны, но с небольшими оговорками:
- большинство из них — платные, и качество поиска информации там все равно среднее, выдачу придется верифицировать и перебирать вручную;
- есть пара бесплатных вариантов с ограничением на количество запросов, но в выдаче присутствует высокий процент шлака.
Даже несмотря на то, что большинство ботов использует одни и те же источники информации, для уточнения данных лучше применять сразу несколько инструментов — это повысит релевантность поиска и качество результатов. Тем не менее для серьезного расследования без услуг профессиональных пробивал все равно не обойтись: они имеют доступ к актуальным служебным базам различных государственных и коммерческих организаций, вернее, связь с сотрудниками, которые, в свою очередь, могут обращаться к этим базам.
Боты могут подсказать направление поиска и расширить набор исходных данных, но в качестве полноценного инструмента для пробива персональных данных они вряд ли сгодятся.
Еще по теме: Угон Телеграм и как от этого защититься
ВКонтактеTwitterFacebookOKTelegramWhatsAppViber
warning
Незаконный сбор персональной информации — это нарушение закона «О персональных данных» и других законов РФ. Также подобные действия могут образовать состав преступления по статье 137 УК РФ «Нарушение неприкосновенности частной жизни». Ни автор, ни редакция не несут ответственности за любые последствия использования приведенных в этой публикации сведений, которые представлены здесь исключительно ради информирования читателя.
Большинство ботов Telegram, выполняющих по запросу пользователя поиск и выдачу персональных данных, работают по схеме OSINT, то есть опираются на открытые источники, для чего эксплуатируют API различных служб и интернет‑ресурсов. Другие используют слитые базы данных, но такие сервисы, во‑первых, не всегда функционируют стабильно, а во‑вторых, испытывают проблемы с актуализацией информации: любая утекшая в паблик база со временем устаревает и, разумеется, не обновляется. Монетизируются подобные боты либо за счет донатов, либо за счет рекламы, или же админы ограничивают количество бесплатных запросов, после чего бот начинает просить денег за каждую следующую выдачу. Иногда — если админы ну очень жадные — используются все методы сразу.
Люди ищут персональную информацию по разным причинам. Кто‑то пытается таким образом отыскать своих <strike>отравителей</strike> должников или симпатичную соседку по подъезду с большими и красивыми си… ними глазами. Кто‑то разыскивает прямые контакты блогеров или владельцев пабликов либо пытается из чистого любопытства посмотреть посты в закрытых профилях соцсетей <strike>своей бывшей</strike>.
Еще можно по номеру машины отыскать мобильный телефон подрезавшего тебя на дороге водятла, позвонить ему, назвать по имени‑отчеству и вежливо попросить объяснений. Некоторые «гонщики» в такие моменты почему‑то немного смущаются. В общем, причины могут быть разными, а средство одно: условно‑бесплатные Telegram-боты или услуги пробива, до сих пор широко рекламируемые в даркнете.
info
О том, как и за сколько предоставляют в даркнете услуги пробива, читай в статье «Пробей меня полностью! Кто, как и за сколько пробивает персональные данные в России».
Очевидно, что не все боты одинаково полезны. Некоторые просят денег, но в ответ либо не находят актуальную информацию, либо отдают откровенную туфту. Другие вроде бы работают, но настолько странно, что достоверность предлагаемых ботом данных остается сомнительной. Чтобы ты не тратил драгоценное время и деньги на поиск жемчужин в куче органических удобрений, твой любимый журнал протестировал наиболее популярные боты в Telegram и прямо сейчас поделится с тобой полученными результатами. Погнали!
Get Contact
Еще один популярный бот, упоминавшийся в ряде недавних журналистских публикаций. Бот обладает довольно‑таки обширным набором функций: поиск по имени в простом текстовом формате, по номеру автомобиля, по номеру телефона, по адресу электронной почты, по названию юридического лица или ИНН.
Для отправки команд бот требует подписаться на собственный канал, но даже это не гарантирует результата. По телефону «Глаз Бога» выдает название оператора и его регион (видимо, для тех, кто не умеет определять эти данные на глаз), возможное имя (я ввел несколько телефонных номеров — имена совпали). Еще он может найти почтовые адреса (вероятнее всего, по базе администраторов доменов), страницу «ВКонтакте», аккаунт «Телеграм», WhatsApp, число интересовавшихся персонажем до тебя. Но эту информацию бот предоставит за 30 рублей. То же самое касается поиска по номеру автомобиля: бесплатно бот показывает только регион (который можно определить и так), а за тридцатку предлагает скачать отчет «Автокода». При этом данные об автомобиле по его номеру при желании нетрудно отыскать в этих ваших интернетах бесплатно.
Если ты введешь адрес электронной почты, бот любезно покажет тебе логин (до символа @
) и домен (после @
) — это особо ценная информация! Также тебе предложат купить адрес привязанной к этому мылу странички «ВКонтакте» и связанные с email пароли из какой‑то слитой базы. По имени бот ищет только номер телефона в заданном регионе, находит неправильный и для его просмотра предлагает купить подписку.
В общем и целом польза от этого бота показалась мне весьма сомнительной: инфу, которую «Глаз Бога» отдает бесплатно, можно при желании нагуглить и без него, а платная информация скудна и не всегда достоверна.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»← Ранее Вьетнам пострадал от сложной атаки на цепочку поставокДалее → Торопись! С 1 января возрастет стоимость курса «Безопасность веб-приложений»Добрый день, сегодня я хотел бы поделится с Вами проблемами и их необычными решениями, которые встретились при написании небольших IT проектов. Сразу скажу, что статья для тех, кто хоть немного разбирается в разработке телеграмм ботов, баз данных, SQL и в языке программировании python. Весь проект выложен на github, ссылка будет в конце статьи.
Основная проблема
Изначально я хотел для себя написать простенького телеграмм бота счетчика калорий, который получает число от пользователя и возвращает сколько калорий осталось до нормы на день. То есть нужно хранить грубо говоря пару переменных для каждого пользователя. В итоге нужно было выбрать способ хранить эти данные.
- Вариант — глобальные переменные, оперативная память. Вариант сразу провальный, так как при падении программы мы теряем все
- Вариант — запись в файл на диске. Для такого проекта может и пойдет, но я планировал деплой бота на heroku, который каждый день стирает все данные с диска. Так что этот вариант не подошел
- Вариант — Google-таблицы. Изначально я хотел остановится на этом варианте, но начал разбираться и понял, что есть ограничение на количество запросов к таблице, и чтобы только начать использовать таблицу нужно написать кучу строк кода и разобраться в их не самом простом апи
- Вариант — база данных. Да, это наилучший вариант во всем. Но для такого проекта это даже смешно использовать. Также развертывание и поддержка базы данных на стороннем сервере обойдется в копеечку.
В итоге ни один из этих вариантов не подошел. Конечно же есть и десятки других способов, но мне хотелось бы, чтобы было бесплатно, быстро и минимум кода.
Решение
Идея очень простая, для хранения данных мы будем использовать in memory базу данных sqllite, так как она уже встроена в python 3 и будем делать бэкапы нашей таблицы на сервера Telegram с небольшим интервалом (примерно каждые 30 секунд) и бэкап при закрытие процесса программы. Если сервер упал, то при первом запросе мы автоматически загрузим нашу таблицу с сервера Telegram и восстановим данные в sqllite. Можно использовать и любую другую in memory бд, кому как нравится.
Плюсы
- Быстродействие — за счет работы с данными в оперативной памяти скорость выполнения программы даже быстрее, чем при использовании бд на стороннем сервере (графики скорости выполнения и тестирования будут в конце)
- Бесплатно — не нужно покупать сторонние сервера для баз данных и все данные хранятся в виде бэкапа бесплатно на серверах Telegramа
- Относительно надежно — если сервер падает по непонятным причинам, то мы максимум теряем данные за последние 30 секунд (время интервала бэкапов), для рабочего прототипа или небольшого проекта будет достаточно.
- Минимальные затраты при переходе на обычную бд — нужно заменить данные подключения, убрать код бекапов и перенести данные таблицы из бэкапа на новую бд.
Минусы
- Отсутствие горизонтального масштабирования
- Нужно два аккаунта в Telegramе (один для администратора, другой для тестирования пользователя)
- Сервер не будет работать в России из-за блокировок
- В комментариях я думаю Вы найдете еще десяток других нюансов.
Время говнокодить
Напишем простой кликер и проведем тесты на скорость выполнения. Бот будет написан на языке программирования python с использованием асинхронной библиотеки взаимодействия с api телеграмма aiogram. Первым делом нужно заполнить настройки бота, не буду рассказывать как получить токен от BotFather, уже сотни статей есть на эту тему. Также нам нужен второй аккаунт в телеграмме для админа, в котором будут сохраняться наши бекапы. Для того, чтобы получить admin_id и config_id нам нужно запустить бота с аккаунта администратора и написать боту «admin», после чего он создаст первый бекап, и напишет ваш admin_id, config_id. Заменяем и запускаем бота заново.
#--------------------Настройки бота------------------------- # Ваш токен от BotFather TOKEN = '1234567:your_token' # Логирование logging.basicConfig(level=logging.INFO) bot = Bot(token=TOKEN) dp = Dispatcher(bot) # Ваш айди аккаунта администратора и айди сообщения где хранится файл с данными admin_id=12345678 config_id=12345 conn = sqlite3.connect(":memory:") # настройки in memory бд cursor = conn.cursor()
Так теперь пройдемся по основной логике бота
Если боту приходит сообщение со словом «admin», то мы создаем таблицу пользователей с такой моделью данных:
- chatid — уникальный чат айди пользователя
- name — имя пользователя
- click — количество кликов
- state — значение для машины состояний, в данном проекте не используется, но в более сложных без него не обойтись
Добавляем тестового пользователя, и отправляем документ на сервер Telegram с нашей таблицей. Так же отправляем admin_id и config_id администратору в виде сообщений. После получения айдишников, данный код нужно закомментировать.
# Логика для администратора if message.text == 'admin': cursor.execute("CREATE TABLE users (chatid INTEGER , name TEXT, click INTEGER, state INTEGER)") cursor.execute("INSERT INTO users VALUES (1234, 'eee', 1,0)") conn.commit() sql = "SELECT * FROM users " cursor.execute(sql) data = cursor.fetchall() str_data = json.dumps(data) await bot.send_document(message.chat.id, io.StringIO(str_data)) await bot.send_message(message.chat.id, 'admin_id = {}'.format(message.chat.id)) await bot.send_message(message.chat.id, 'config_id = {}'.format(message.message_id+1))
Логика для пользователя
Первым делом пытаемся получить из in memory бд данные пользователя, который отправил сообщение. Если ловим ошибку, то загружаем данные с бекапа сервера Telergam, заполняем нашу бд данными с бекапа и повторно пытаемся найти пользователя.
# Логика для пользователя try: sql = "SELECT * FROM users where chatid={}".format(message.chat.id) cursor.execute(sql) data = cursor.fetchone() # or use fetchone() except Exception: data = await get_data() cursor.execute("CREATE TABLE users (chatid INTEGER , name TEXT, click INTEGER, state INTEGER)") cursor.executemany("INSERT INTO users VALUES (?,?,?,?)", data) conn.commit() sql = "SELECT * FROM users where chatid={}".format(message.chat.id) cursor.execute(sql) data = cursor.fetchone() # or use fetchone()
Если мы нашли пользователя в бд, то обрабатываем кнопки:
- При нажатие «Клик» мы обновляем количество кликов у данного пользователя
- При нажатие «Рейтинг» мы выводим список пятнадцати человек у которых наибольшее количество кликов.
Если не нашли пользователя, то написать ему ошибку.
#При нажатии кнопки клик увеличиваем значение click на один и сохраняем if data is not None: if message.text == 'Клик': sql = "UPDATE users SET click = {} WHERE chatid = {}".format(data[2]+1,message.chat.id) cursor.execute(sql) conn.commit() await bot.send_message(message.chat.id, 'Кликов: {} '.format(data[2]+1)) # При нажатии кнопки Рейтинг выводим пользователю топ 10 if message.text == 'Рейтинг': sql = "SELECT * FROM users ORDER BY click DESC LIMIT 15" cursor.execute(sql) newlist = cursor.fetchall() # or use fetchone() sql_count = "SELECT COUNT(chatid) FROM users" cursor.execute(sql_count) count=cursor.fetchone() rating='Всего: {}n'.format(count[0]) i=1 for user in newlist: rating=rating+str(i)+': '+user[1]+' - '+str(user[2])+'n' i+=1 await bot.send_message(message.chat.id, rating) else: await bot.send_message(message.chat.id, 'Вы не зарегистрированы')
Напишем логику для регистрации пользователя
Пытаемся найти пользователя в бд, если его нет, то добавляем новую строку в таблицу и делаем бэкап. Если ловим ошибку, то подгружаем последний бэкап, заполняем таблицу и повторяем попытку регистрации.
sql_select = "SELECT * FROM users where chatid={}".format(message.chat.id) sql_insert = "INSERT INTO users VALUES ({}, '{}', {},{})".format(message.chat.id,message.chat.first_name, 0, 0) try: cursor.execute(sql_select) data = cursor.fetchone() if data is None: cursor.execute(sql_insert) conn.commit() await save_data() except Exception: data = await get_data() cursor.execute("CREATE TABLE users (chatid INTEGER , name TEXT, click INTEGER, state INTEGER)") cursor.executemany("INSERT INTO users VALUES (?,?,?,?)", data) conn.commit() cursor.execute(sql_select) data = cursor.fetchone() if data is None: cursor.execute(sql_insert) conn.commit() await save_data() # Создаем кнопки button = KeyboardButton('Клик') button2 = KeyboardButton('Рейтинг') # Добавляем kb = ReplyKeyboardMarkup(resize_keyboard=True).add(button).add(button2) # Отправляем сообщение с кнопкой await bot.send_message(message.chat.id,'Приветствую {}'.format(message.chat.first_name),reply_markup=kb)
Так, ну и самое интересное.
Сохранение и получение данных с сервера Telergam
Мы выгружаем все данные с таблицы пользователей, переводим словарь в строку и изменяем наш файл, который хранится на серверах Telegram.
#--------------------Сохранение данных------------------------- async def save_data(): sql = "SELECT * FROM users " cursor.execute(sql) data = cursor.fetchall() # or use fetchone() try: # Переводим словарь в строку str_data=json.dumps(data) # Обновляем наш файл с данными await bot.edit_message_media(InputMediaDocument(io.StringIO(str_data)), admin_id, config_id) except Exception as ex: print(ex)
Для того, чтобы получить бэкап нам нужно переслать сообщение с файлом от админа к админу. Затем получить путь к файл, считать данные по url и вернуть весь бэкап.
# #--------------------Получение данных------------------------- async def get_data(): # Пересылаем сообщение в данными от админа к админу forward_data = await bot.forward_message(admin_id, admin_id, config_id) # Получаем путь к файлу, который переслали file_data = await bot.get_file(forward_data.document.file_id) # Получаем файл по url file_url_data = bot.get_file_url(file_data.file_path) # Считываем данные с файла json_file= urlopen(file_url_data).read() # Переводим данные из json в словарь и возвращаем return json.loads(json_file)
Ну вот почти и все, осталось только написать таймер, чтобы делал бэкапы и протестировать бота. Создаем поток, который каждые 30 секунд выполняет наш метод save_data()
def timer_start(): threading.Timer(30.0, timer_start).start() try: asyncio.run_coroutine_threadsafe(save_data(),bot.loop) except Exception as exc: pass
Ну и в главной программе мы запускаем таймер и самого бота.
#--------------------Запуск бота------------------------- if __name__ == '__main__': timer_start() executor.start_polling(dp, skip_updates=True)
Так с кодом вроде бы разобрались, вот ссылка рабочего проекта на github.
Как запустить
- Скачиваем проект с гитхаба. Запускаем проект в любой среде разработки для python (Например: PyCharm).
- Среда разработки автоматически подгрузит необходимые библиотеки с файла requirements.
- Заменяем Token от BotFather в файле main.py
- Запускаем проект
- Со второго аккаунта нажимаем /start и пишем слово «admin»
- Выключаем проект и заполняем admin_id и config_id в файле main.py
- Запускаем проект и с аккаунта пользователя нажимаем старт
- Профит
Тестирование и графики
Тесты проводились на серверах heroku с минимальными характеристиками инстансов. Так, что можно считать, что все тесты были выполнены в более менее равных условиях. Графики сделаны по выборкам из ~100 запрос-ответов. И представлены средние показатели выборки. В качестве базы данных на стороннем сервере использовался PostgreSQL на Amazon RDS с минимальными характеристиками. При одном миллионе пользователей время бэкапов становится проблемой. Размер бэкапа полностью зависит от вашей модели данных, в моем случае при одном миллионе пользователей получился файл с данными на 21 мегабайт.
Вывод
Данный метод хранения данных имеет смысл для проектов до миллиона пользователей. То есть для прототипа или личного стартапа данный способ имеет право на жизнь. В итоге мы получили полностью автономного кликера, независящий от удаленных баз данных. Вот выше описанный проект, развернутый на heroku: @Clicker_fast_bot Так же я реализовал более сложный проект с данной идеологией: @Random_friend_bot Подобие чатвдвоем и чатрулет, но только в телеграмме. Он ищет в радиусе 100 км человека противоположного пола для общения и реализует закрытый чат с новым собеседником. Если будет интересно могу скинуть исходный код проекта. Так же если данная тема будет актуальна, то в следующей статье могу описать создание Rest api без внешних БД. То есть такой стек django-sqllite-Telegram. Буду рад любой критике, спасибо за внимание!Используемые источники:
- https://rusadmin.biz/zashhita-i-bezopasnost/boty-telegram-s-informatsiej-o-cheloveke/
- https://spy-soft.net/telegram-bots-for-finding-information/
- https://xakep.ru/2020/12/28/telegram-bots/
- https://habr.com/ru/post/464865/