Skip to content

Latest commit

 

History

History
84 lines (58 loc) · 4.15 KB

File metadata and controls

84 lines (58 loc) · 4.15 KB

gsmarbot

English README

Open-source версия Telegram inline-бота для поиска характеристик мобильных устройств. Бот использует парсинг GSMArena/Helpix, локальный SQLite-кеш, fuzzy search и пользовательские настройки.

Основной публичный Telegram-инстанс закрывается: его слишком дорого и неудобно поддерживать как постоянно работающий сервис. Репозиторий опубликован, чтобы проект можно было запускать самостоятельно, изучать, дорабатывать или использовать как основу для своего бота.

Hosted API

Если вам нужны только данные по устройствам, проще использовать поддерживаемый API:

https://gsmarbot.ru/docs

API продолжает поддерживаться и работать независимо от основного Telegram-бота. В нём доступны уже спаршенные устройства, поэтому в большинстве случаев не нужно поднимать своего бота, парсер и локальную базу.

Код API-сервера не входит в этот open-source репозиторий. В публичной версии также нет API-dashboard, создания API-ключей и команды /api в Telegram-боте.

Возможности

  • Inline-поиск устройств в Telegram через Telethon.
  • Fuzzy search по локально закешированным устройствам.
  • Парсеры GSMArena и Helpix.
  • SQLite-хранилище для кеша, настроек и предложений устройств.
  • Пользовательские настройки бота.

Требования

  • Python 3.11+
  • Telegram bot token от BotFather
  • Telegram API ID/hash с https://my.telegram.org
  • SQLite, он входит в стандартную поставку Python

Установка

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env

Заполните .env своими Telegram credentials и нужными настройками запуска. Приложение читает настройки из переменных окружения:

set -a
source .env
set +a

Запуск

python bot.py

Конфигурация

Основные переменные окружения:

  • TELEGRAM_BOT_TOKEN, TELEGRAM_TEST_BOT_TOKEN
  • TELEGRAM_API_ID, TELEGRAM_API_HASH
  • GSMARBOT_DB_PATH, по умолчанию gsmarbot.db
  • GSMARBOT_SOURCE_URL, по умолчанию https://github.com/appsfolder/gsmarbot
  • PROXY_URLS - необязательный список прокси через запятую

Runtime-файлы намеренно игнорируются git: SQLite-базы, Telethon-сессии, логи, API key JSON, proxy lists, локальные кеши и приватный API-код.

Структура проекта

  • bot.py - точка входа Telegram-бота.
  • bot_state.py - совместимость и helpers вокруг SQLite-состояния.
  • modules/config.py - конфигурация через переменные окружения.
  • modules/db.py - SQLite-схема и доступ к данным.
  • modules/parserengine.py - web search и парсинг страниц устройств.
  • modules/fuzzengine.py - локальный fuzzy search.
  • modules/articlesbuilder.py, modules/keyboardbuilder.py, modules/reformer.py - форматирование inline-выдачи Telegram.
  • modules/utils.py - небольшие общие helpers.
  • site/ - статические страницы и документация hosted API.
  • misc/ - локализация и вспомогательные данные.

Лицензия

MIT