Skip to content

nrf24l01/tg_core_automize

Repository files navigation

Ядро для всех моих надстроек над телегой

Зачем эта штука?

  • Вы хотите делать QOL надстройки для тг, типа прегенерации ответов через AI в черновик, но не хотите после выкидывания телеграмом вас из всех сессий менять гору файлов сессии

Вроде правильная документация

Собсна как это должно работать

  • Есть ядро, те эта штука
    • Единственная работает с тг напрямую
    • Никак не обрабатывает сообщения, просто бродкастит их клиентам
    • При получении сообщений(те задач для это ядра, по типу отправить сообщение, поставить реакцию и тд) это ядро их выполняет
  • Есть клиент, это может быть логгер, ai ответчик, парсилка историй, авотреагировалка на сообщения
    • Он не связан с тг напрямую(нет файла сессии)
    • Получает сообщение, если оно к нему относится, обрабатывает, если нет то пофиг
    • Если нужно что-то сделать, говорим это сделать

Как эту штуку поднять?

  • Зависимости
    • Minio
  • Изначально предполагается запуск без докера, по нескольким причинам
    • Тут нужен доступ во внешний мир, а network: host я не уважаю
    • Не удобно обновлять файл сессии в случае чего, так ты просто systemctl stop и потом python3 main.py
    • Нужно будет сеть настраивать чтоб между контейнерами общаться
  • Ставится всё просто, нужно скачать РЕЛИЗ и перейти в папку с ним:
cp .env.example .env
vim .env # НЕОБХОДИМО ЗАПОЛНИТЬ КОНФИГ
python3 main.py # Тут вам нужно будет авторизоваться, когда войдёте смело выключайте
sudo cp tg_core_worker.service /etc/systemd/system/tg_core_worker.service
sudo vim /etc/systemd/system/tg_core_worker.service # Нужно заменить <YOUR NICKNAME> на имя вашего пользователя
sudo systemctl daemon-reload
sudo systemctl enable --now tg_core_worker

Как эти болванки общаются?

Собсна тут у нас есть n стульев

  • http запрос с проверкой есть ли новые месаджи(как тг бот) -
    • Не оптимально
    • Я наигрался с http серверами ещё на проде
  • вебсокеты -
    • Не интересно, наигрался
    • Оптимально, тк держится стрим. Но опять-же есть некоторые задержки(как-будто человек их заметит)
  • gRPC Хотелось бы, но -
    • Низкоуровневые, те нет ничего лишнего + есть стрим нативно
      • Но блин слишком низкоуровневые
      • И хотят асинхрон
    • Нужно слишком много ...
  • Настоящие, нефильтрованное, tcp сокеты + ОНИ +
    • Низкоуровневые + стрим есть смысл жизни
      • Прикольно шлются жсонки
      • Нужно продумывать отправку нефиксированных пакетов(как будто там сложнее чем просто 2 вайла, и пару конвертов инта в байты)
    • За 2 года общения с ними всё ещё не наигрался, вкатывает мне такое писать(даже не вайбить)

Что надо сделать?

  • Перевести всё с сокетов на gRPC