В этой серии статей мы напишем телеграм бота на python. Он работает с внешним API, запрашивает результаты футбольных матчей и выводить их в сообщении.
Когда локальная версия будет готова, разместим бота на сервере. Вместо Heroku, я выбрал отдельную виртуальную машину, что бы бот не засыпал. Это ближе к реальности.
Вся разработка разбита на этапы:
- Локальная установка библиотек и Redis.
- Регистрация и получение токена.
- Настройка , подключение к базам данных.
- Написание основной функциональности бота.
- Регистрации, выбор и настройка внешнего апи футбольных матчей.
- Добавление сбора результатов матчей и интеграция в бота.
- Деплой, публикация на сервере:
- Регистрация дешевого или бесплатного VPS.
- Запуск Редис-клиента.
- Запуск и настройка бота на сервере.
Вводные данные
Материал рассчитан на уровень Начинающий+, нужно понимать как работают классы и функции, знать основы базы данных и async/await. Если знаний мало, крайне желательно писать код в Pycharm, бесплатная версия подходит.
Что делать ели бот администратор канала не работает?
Используйте указанные версии библиотек, что бы проект работал без изменений. При установке иных версий вы можете получать ошибки, связанные с совместимостью.
Версия Python — 3.8+ aiogram==2.11.2 emoji==1.1.0 redis==3.5.3 ujson==4.0.1 uvloop==0.14.0 # не работает и не требуется на Windows
Локальная установка библиотек для бота и Redis
Для начала нужно создать проект «fonlinebot» с виртуальным окружение. В Pycharm это делается так:
Затем установить библиотеки в виртуальном окружении. Сразу понадобятся 4: для бота, работы с redis, ускорения и emoji в сообщениях.
pip install aiogram==2.11.2 redis==3.5.3 ujson==4.0.1 emoji==1.1.0
Установка Redis локально
Redis — это резидентная база данных (такая, которая хранит записи прямо в оперативной памяти) в виде пар ключ-значение. Чтение и запись в память происходит намного быстрее, чем в случае с дисками, поэтому такой подход отлично подходит для хранения второстепенных данных.
Из недавней статьи — Redis для приложений на Python
Для установки Redis на Linux/Mac следуйте этим инструкциям: https://redis.io/download#from-source-code. Для запуска достаточно ввести src/redis-server .
Что бы установить на Windows скачайте и распакуйте архив отсюда. Для запуска откройте «redis-server.exe».
Теперь нужно убедиться, что все работает. Создайте файл «main.py» в корне проекта и выполните этот код:
# fonlinebot/main.py import redis r = redis.StrictRedis() print(r.ping())
Вывод будет True , в другом случае ошибка.
Регистрация бота и получение токена
Для регистрации напишем https://t.me/botfather команду /newbot . Далее он просит ввести имя и адрес бота. Если данные корректны, выдает токен. Учтите, что адрес должен быть уникальным, нельзя использовать «fonlinebot» снова.
На время разработки сохраним токен в файл. Создайте «config.py» в папке проекта для хранения настроек и запишите токен TOKEN = «ВАШ ТОКЕН»
Настройка бота
Теперь нужно связать бота с redis и базой данных, проверить работоспособность.
Создадим необходимые модули и файлы. В папке «fonlinebot» к созданным ранее «main.py» и «config.py» добавим: «database.py», «requirements.txt» и папку «app». В папку «app» добавьте: «bot.py», «dialogs.py», «service.py». Вот такая структура получится:
Разделив бот на модули, его удобнее поддерживать и дорабатывать.
- «main.py» — для запуска бота.
- «config.py» — хранит настройки, ключи доступов и другую статическую информацию.
- «database.py» — для работы с базой данных и кешем(redis).
- «requirements.txt» — хранит зависимости проекта, для запуска на сервере.
- «app» — папка самого бота.
- «bot.py» — для взаимодействия бота с юзерами, ответы на сообщения.
- «dialogs.py» — все текстовые ответы бота.
- «service.py» — бизнес логика, получение и обработка данных о матчах.
Пришло время перейти к программированию. Запишем в «requirements.txt» наши зависимости:
aiogram==2.11.2 emoji==1.1.0 redis==3.5.3 ujson==4.0.1 uvloop==0.14.0
Так как большая часть программирует на Windows, uvloop мы не устанавливали локально. Установим его на сервере.
В «config.py» к токену добавим данные бота и подключения к redis.
# fonlinebot/config.py import ujson import logging logging.basicConfig(level=logging.INFO) TOKEN = «здесь должен быть токен» BOT_VERSION = 0.1 # База данных хранит выбранные юзером лиги BOT_DB_NAME = «users_leagues» # Тестовые данные поддерживаемых лиг BOT_LEAGUES = < «1»: «Бундеслига», «2»: «Серия А», «3»: «Ла Лига», «4»: «Турецкая Суперлига», «5»: «Чемпионат Нидерландов», «6»: «Про-лига Бельгии», «7»: «Английская Премьер-лига», «8»: «Лига 1», ># Флаги для сообщений, emoji-код BOT_LEAGUE_FLAGS = < «1»: «:Germany:», «2»: «:Italy:», «3»: «:Spain:», «4»: «:Turkey:», «5»: «:Netherlands:», «6»: «:Belgium:», «7»: «:England:», «8»: «:France:», ># Данные redis-клиента REDIS_HOST = ‘localhost’ REDIS_PORT = 6379 # По умолчанию пароля нет. Он будет на сервере REDIS_PASSWORD = None
Информацию о лигах в будущем можно будет вынести в отдельный json файл. Эта версия бота будет поддерживать не более 10 вариантов, я явно их записал.
Добавление базы данных
Теперь добавим классы для работы с базой данных sqlite и redis. База данных нужна для сохранения предпочтений по лигам юзеров.
Юзер будет выбирать 3 чемпионата для отслеживания, бот сохранит их в БД и использует для запроса результатов.
Кеш(redis) будет сохранять результаты матчей, что бы уменьшить количество запросов к API и ускорить время ответов. Как правило, бесплатные API лимитирует запросы.
# fonlinebot/database.py import os import logging import sqlite3 import redis import ujson import config # класс наследуется от redis.StrictRedis class Cache(redis.StrictRedis): def __init__(self, host, port, password, charset=»utf-8″, decode_responses=True): super(Cache, self).__init__(host, port, password=password, charset=charset, decode_responses=decode_responses) logging.info(«Redis start») def jset(self, name, value, ex=0): «»»функция конвертирует python-объект в Json и сохранит»»» r = self.get(name) if r is None: return r return ujson.loads(r) def jget(self, name): «»»функция возвращает Json и конвертирует в python-объект»»» return ujson.loads(self.get(name))
Класс Cache наследуется от StrictRedis . Мы добавляем 2 метода jset , jget для сохранения списков и словарей python в хранилище redis. Изначально он не работает с ними.
Теперь добавим класс, который будет создавать базы данных и выполнять функции CRUD.
# fonlinebot/database.py #. class Database: «»» Класс работы с базой данных «»» def __init__(self, name): self.name = name self._conn = self.connection() logging.info(«Database connection established») def create_db(self): connection = sqlite3.connect(f».db») logging.info(«Database created») cursor = connection.cursor() cursor.execute(»’CREATE TABLE users (id INTEGER PRIMARY KEY, leagues VARCHAR NOT NULL);»’) connection.commit() cursor.close() def connection(self): db_path = os.path.join(os.getcwd(), f».db») if not os.path.exists(db_path): self.create_db() return sqlite3.connect(f».db») def _execute_query(self, query, select=False): cursor = self._conn.cursor() cursor.execute(query) if select: records = cursor.fetchone() cursor.close() return records else: self._conn.commit() cursor.close() async def insert_users(self, user_id: int, leagues: str): insert_query = f»»»INSERT INTO users (id, leagues) VALUES (, «»)»»» self._execute_query(insert_query) logging.info(f»Leagues for user added») async def select_users(self, user_id: int): select_query = f»»»SELECT leagues from leagues where record = self._execute_query(select_query, select=True) return record async def update_users(self, user_id: int, leagues: str): update_query = f»»»Update leagues set leagues = «» where self._execute_query(update_query) logging.info(f»Leagues for user updated») async def delete_users(self, user_id: int): delete_query = f»»»DELETE FROM users WHERE self._execute_query(delete_query) logging.info(f»User deleted»)
Sqlite подходит для тестовых проектов. В будущем потребуется переход на внешнюю базу данных и асинхронная работа. Что бы не переписывать всю логику работы с базой, я сразу добавил асинхронный синтаксис.
Файл базы данных будет создаваться один раз, автоматически. Теперь нужно создать экземпляры классов:
Источник: pythonru.com
Ищем ботов в Телеграм правильно
Для веселья или для практической пользы, «роботы» бывают полезны. Одни из них грубо отвечают вам и рассказывают смешные истории, другие – помогают привести в порядок текст, написанный в неправильной раскладке. Но наткнуться на них бывает не так-то просто. Поэтому я расскажу вам о том, как найти бота в Телеграме и где.
Где искать Телеграм-ботов?
Как найти бота в Телеграме по названию?
Чтобы искать по названию, каких-то сторонних инструментов не нужно – достаточно поисковой строки. Но если у вас есть только фрагмент имени, явно придется воспользоваться инструментом, о котором мы писали выше. Отчасти забавно, что на скриншоте ниже будет представлен и поиск через сам мессенджер: вводим название или часть его и смотрим предложенные варианты.
Почему не удается наткнуться на нужного бота?
Заключение
Читайте далее:
50 полезных каналов и 3 бота: берем от Телеграма максимум
Поиск канала в Телеграм на интересующую тему
Полезные Телеграм-боты на русском языке
Способы поиска видео в Телеграме
Ищем нужный канал на Youtube
Источник: smmx.ru
Телеграм-боты для пробива и поиска информации
Недавние разоблачительные публикации известного оппозиционера Алексея Навального всколыхнули волну небывалого интереса общественности к теневому бизнесу, связанному с услугами пробива. То, что почти любые данные у нас продаются и покупаются, — не секрет, но, говорят, кое‑что можно разузнать и Wowсе бесплатно у ботов в «Телеграме». Сегодня я расскажу про лучшие Telegram-боты для пробива и поиска информации.
Большинство ботов Telegram, выполняющих по запросу пользователя поиск и выдачу персональных данных, работают по схеме OSINT, то есть опираются на открытые источники, для чего эксплуатируют API различных служб и интернет‑ресурсов. Другие используют слитые базы данных, но такие сервисы, во‑первых, не всегда функционируют стабильно, а во‑вторых, испытывают проблемы с актуализацией информации: любая утекшая в паблик база со временем устаревает и, разумеется, не обновляется.
Незаконный сбор персональной информации — это нарушение закона «О персональных данных» и других законов РФ. Также подобные действия могут образовать состав преступления по статье 137 УК РФ «Нарушение неприкосновенности частной жизни». Ни автор, ни редакция не несут ответственности за любые последствия использования приведенных в этой публикации сведений, которые представлены здесь исключительно ради информирования читателя.
Монетизируются подобные боты либо за счет донатов, либо за счет рекламы, или же админы ограничивают количество бесплатных запросов, после чего бот начинает просить денег за каждую следующую выдачу. Иногда — если админы ну очень жадные — используются все методы сразу.
Люди ищут персональную информацию по разным причинам. Кто‑то пытается таким образом отыскать своих отравителей должников или симпатичную соседку по подъезду с большими и красивыми си… ними глазами. Кто‑то разыскивает прямые контакты блогеров или владельцев пабликов либо пытается из чистого любопытства посмотреть посты в закрытых профилях соцсетей своей бывшей.
Еще можно по номеру машины отыскать мобильный телефон подрезавшего вас на дороге водятла, позвонить ему, назвать по имени‑отчеству и вежливо попросить объяснений. Некоторые «гонщики» в такие моменты почему‑то немного смущаются. В общем, причины могут быть разными, а средство одно: условно‑бесплатные Telegram-боты или услуги пробива, до сих пор широко рекламируемые в даркнете.
Telegram-боты для пробива и поиска информации
Очевидно, что не все боты одинаково полезны. Некоторые просят денег, но в ответ либо не находят актуальную информацию, либо отдают откровенную туфту. Другие вроде бы работают, но настолько странно, что достоверность предлагаемых ботом данных остается сомнительной. Чтобы вы не тратили драгоценное время и деньги на поиск жемчужин в куче органических удобрений, ваш любимый сайт spy-soft.net протестировал наиболее популярные боты Telegram для пробива и прямо сейчас поделится с вами полученными результатами. Погнали!
Get Contact
Тот самый легендарный бот, сыгравший немаловажную роль в нашумевшем расследовании. Бот показывает, как именно записан номер мобильного телефона в адресной книге других абонентов. Информацию железяка черпает с мобильных устройств абонентов, установивших приложение Get Contact, поэтому, если на телефонах ваших друзей эта программа не установлена, никаких данных вы не получите. В день бот позволяет отправить не больше трех телефонных номеров.
Не знаю, с чем именно связано это досадное явление — с нарушением в логике сервиса или с внезапным наплывом клиентов, но пользоваться сейчас Telegram-ботом Get Contact — бесполезная трата времени.
«Глаз Бога»
Еще один популярный бот, упоминавшийся в ряде недавних журналистских публикаций. Бот обладает довольно‑таки обширным набором функций: поиск по имени в простом текстовом формате, по номеру автомобиля, по номеру телефона, по адресу электронной почты, по названию юридического лица или ИНН.
Тест показал, что номер мобильника по госномеру авто Quick_OSINT_bot находит неправильно, по телефонному номеру выдает в основном регион оператора и имя, под которым абонент записан в телефонных книгах, а также имя, которым он подписывается на досках бесплатных объявлений.
Весьма познавательные результаты получаются при поиске по адресу email: бот возвращает учетки с таким адресом в различных соцсетях, никнеймы, номер мобильного, имя и фамилию (не всегда корректно), а также связанные с этим мылом пароли из слитых баз.
Бот позволяет выполнить несколько бесплатных запросов в сутки, после чего начинает клянчить денег: 0,1 доллара за каждый отчет или предлагает оформить подписку.
Himera
Бот, по слухам, подключен к системе проверки контрагентов Unirate24, и он платный. Самый дешевый тариф с ограничением на количество поисковых запросов стоит 1199 рублей. Бот позволяет искать информацию по ФИО, номеру телефона, номеру автомобиля, адресу электронной почты, а также данным юридического лица. Найти он может сведения о прописке гражданина, записи о нарушении им закона, данные о родственниках.
По слухам, этот Telegram-бот неплохо справляется с поиском по Москве и области, а вот с регионами могут возникнуть проблемы: там находится не все и не всегда. Значительная часть инфы по юрлицам есть в свободном доступе. Но в целом бот может быть полезен для проверки контрагентов, потенциальных деловых партнеров или, скажем, при найме мутного кандидата на работу в золотохранилище вашего личного банка.
TeleSINT
Бесплатный бот, позволяющий найти по нику, в каких группах в «Телеге» состоит тот или иной пользователь. Теоретически эта информация может рассказать вам что‑то о моральном облике интересах и увлечениях интересующего вас персонажа.
Значительный недостаток этого бота заключается в том, что он показывает участие юзера только в открытых публичных группах, а вот закрытые паблики (то есть самое интересное!) остаются вне его поля зрения.
«Архангел»
Бот, активно рекламировавшийся в сентябре 2020 года на хакерских форумах. По слухам, он подключен к информационно‑аналитической системе Solaris, используемой пробивщиками‑профессионалами. База позволяет искать данные по ФИО, серии и номеру паспорта, фамилии и году рождения, по ИНН, СНИЛС, по адресу, номеру телефона или автомобиля.
Стоимость одного запроса «Архангелу» до недавних пор составляла 250 рублей, но после известных событий бот отключили, и сейчас он выдает сообщение о «временных технических работах». Остается надеяться, что проблемы там действительно временные.
GetFB
Бот работает очень просто: по введенному номеру мобильного телефона в международном формате (+7XXXAAABBCC) GetFB находит зарегистрированную на этот телефон страничку в Facebook. Денег за свою работу бот не просит и работает отменно.
Mailsearchbot
Бот ищет по слитым базам пароли, соответствующие адресам электронной почты, логинам или номеру телефона. Бесплатно бот показывает только часть обнаруженных паролей, а за полной версией отправляет на сторонний сайт, где посетителю с ходу предлагают оплатить подписку.
Мои эксперименты показали, что боты для поиска персональных данных в целом могут быть полезны, но с небольшими оговорками:
- большинство из них — платные, и качество поиска информации там все равно среднее, выдачу придется верифицировать и перебирать вручную;
- есть пара бесплатных вариантов с ограничением на количество запросов, но в выдаче присутствует высокий процент шлака.
Даже несмотря на то, что большинство ботов использует одни и те же источники информации, для уточнения данных лучше применять сразу несколько инструментов — это повысит релевантность поиска и качество результатов. Тем не менее для серьезного расследования без услуг профессиональных пробивал все равно не обойтись: они имеют доступ к актуальным служебным базам различных государственных и коммерческих организаций, вернее, связь с сотрудниками, которые, в свою очередь, могут обращаться к этим базам.
Боты могут подсказать направление поиска и расширить набор исходных данных, но в качестве полноценного инструмента для пробива персональных данных они вряд ли сгодятся.
Источник: cpamax.ru