Skip to content

Как поднять свой НЯН

NyanNyanovich edited this page Jun 28, 2023 · 3 revisions

Требования

  • 2 CPU ядра, 8Gb RAM, 50Gb SSD
  • Ubuntu 18.04 или выше
  • Python 3.7 или выше
  • Docker: инструкция
  • Docker Compose: инструкция
  • Канал в Телеграме и привязанная группа для обсуждения: всё делается внутри Телеграма
  • Бот в Телеграме: создавать через BotFather
  • Бота нужно сделать админом в канале и группе.

Docker нужен для MongoDB, остальное запускается без него. Можно запустить и под MacOS (без особых проблем), и под Windows (с проблемами).

Перед запуском

В качестве эталона можно использовать CI pipeline: workflows/python.yml

  1. Системные зависимости: sudo apt-get install git python3-dev python3-pip

  2. Клонирование репозитория: git clone https://github.com/NyanNyanovich/nyan

  3. Переход в корень репозитория: cd nyan

  4. Зависимости в Python: python3 -m pip install -r requirements.txt

  5. Скачивание моделей: bash download_models.sh

  6. При необходимости можно отредактировать список агрегируемых каналов: channels.json

Заполнение информации о канале и боте

Нужно редактировать файл configs/client_config.json. Для одного канала можно оставить только секцию "main". При этом количество секций и их названия должны совпадать с configs/ranker_config.json.

channel_id

  • ID канала. Для приватных каналов можно получить через ссылку на любое сообщение, кликнув правой кнопкой мыши на и выбрав "Copy message link".
  • Пример ссылки на сообщение: https://t.me/c/1770334618/2. Для этой ссылки ID канала: 1770334618.
  • Для формата Телеграма нужно добавить префикс -100.
  • Итоговый channel_id для примера: -1001770334618.

discussion_id

  • ID группы с комментариями.
  • Строится аналогично channel_id, только для привязанной группы.

bot_token

  • Токен, который выдается при создании бота. Его нужно просто скопировать.
  • Обычно он в формате "число:строка".

Запуск

  1. Запуск базы данных: docker-compose up

  2. Запуск обхода каналов: bash crawl.sh

  3. Запуск демона: bash send.sh

Пример stdout "здорового" обхода

tg_image_2019235760

Пример stdout "здорового" демона

tg_image_371128027