Metadata-Version: 2.4
Name: pynotegram
Version: 0.3.0
Summary: Send simple Telegram notifications from Jupyter notebooks.
Author: Serghei
License-Expression: MIT
License-File: LICENSE
Keywords: ipython,jupyter,notebook,notifications,telegram
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.10
Requires-Dist: httpx[socks]<1,>=0.27
Requires-Dist: ipython>=8
Provides-Extra: relay
Requires-Dist: fastapi>=0.115; extra == 'relay'
Requires-Dist: uvicorn>=0.30; extra == 'relay'
Description-Content-Type: text/markdown

# PyNoteGram

PyNoteGram отправляет сообщения из Jupyter в **один выбранный Telegram-чат**.

После первой настройки в ноутбуках больше не нужно писать токен или `chat_id`.

## Что нужно сделать

### 1. Создать бота

В Telegram откройте `@BotFather`, отправьте `/newbot` и сохраните полученный
токен. Токен является паролем бота.

### 2. Создать отдельную группу

1. Создайте новую группу в Telegram, например **Мои расчеты**.
2. Добавьте туда созданного бота.
3. Напишите в группе `/start`.

### 3. Установить и настроить PyNoteGram

```powershell
pip install pynotegram
pynotegram setup
```

Во время настройки программа один раз попросит токен от BotFather. После этого
она сама найдет группу, запомнит ее и отправит проверочное сообщение.

## Использование в Jupyter

Настроить библиотеку можно прямо в Jupyter:

```python
from pynotegram import setup

setup()
```

Под ячейкой появится скрытое поле для токена. После проверки бот попросит
отправить в группе команду вида `/start@NLP_bot` и подождет появления группы.

После настройки перезапустите Jupyter. В любой ячейке можно написать:

```python
%telegram Расчет закончен!
```

## Получение сообщений из Telegram

Запустите в Jupyter ячейку:

```python
%telegram_read 30
```

Она будет ждать сообщение из сохраненной группы до 30 секунд. Сообщения из
других чатов игнорируются.

Для постоянного ожидания в течение десяти минут:

```python
%telegram_watch 10
```

Новые сообщения будут появляться под ячейкой сразу после отправки. Остановить
ожидание можно кнопкой прерывания ядра Jupyter.

Чтобы код отображался с подсветкой, отправьте его в Telegram так:

````text
```python
def hello():
    print("Привет")
```
````

В Jupyter он появится как отдельный блок Python-кода. Полученный код только
показывается и никогда не запускается автоматически.

Сообщение придет только в группу, выбранную во время настройки.

Для многострочного сообщения:

```python
%%telegram
Обучение модели закончено.
Точность: 94%.
```

Также можно использовать обычный Python:

```python
from pynotegram import send

send("Расчет закончен!")
```

## Если нужен VPN

Включите VPN перед запуском `pynotegram setup` и Jupyter.

Если есть отдельный SOCKS5-прокси:

```powershell
pynotegram setup --proxy "socks5://ЛОГИН:ПАРОЛЬ@АДРЕС:ПОРТ"
```

## Проверка

Отправить сообщение без Jupyter:

```powershell
pynotegram send "Проверка"
```

Посмотреть сохраненный чат:

```powershell
pynotegram status
```

Чтобы выбрать другую группу, снова выполните `pynotegram setup`.

## Важное ограничение

Совсем обойтись только командой `pip install` нельзя: программа должна хотя бы
один раз получить токен вашего бота и узнать, какую группу выбрать. Поэтому
`pynotegram setup` выполняется один раз. В самих ноутбуках настройки больше не
потребуются.

## Безопасность

- Никогда не публикуйте токен Telegram-бота и токен PyPI.
- Если токен Telegram попал в переписку, Git или ноутбук, отзовите его через
  `@BotFather` и создайте новый.
- Код из Telegram отображается в Jupyter, но не запускается автоматически.

## Лицензия

MIT
