# notify Go-библиотека для отправки уведомлений через Telegram и Email. ## Установка ```bash go get git.gm6.ru/icewind/notify ``` ## Telegram ### Создание бота ```go bot, err := notify.NewTelegram("BOT_TOKEN", true) // true — отключить IPv6 if err != nil { log.Fatal(err) } ``` Второй параметр `disableIPV6` принудительно использует TCP4 для соединений с Telegram API — полезно в средах, где IPv6 недоступен или работает нестабильно. ### Отправка текстовых сообщений ```go // Markdown bot.SendTextMessage(chatID, "*Жирный* и _курсив_") // HTML bot.SendHTMLMessage(chatID, "Жирный и курсив") ``` ### Отправка фото ```go // Из файла bot.SendPhotoFromFile(chatID, "/path/to/image.png", "Подпись") // По URL bot.SendPhotoFromURL(chatID, "https://example.com/image.png", "Подпись") // Из байтов bot.SendPhotoFromBytes(chatID, imageData, "photo.png", "Подпись") ``` ### Отправка документов ```go // Из файла bot.SendDocumentFromFile(chatID, "/path/to/report.pdf", "Отчёт за месяц") // По URL bot.SendDocumentFromURL(chatID, "https://example.com/report.pdf", "Отчёт") // Из байтов bot.SendDocumentFromBytes(chatID, fileData, "report.pdf", "Отчёт") ``` ### Доступ к нативному API Для операций, не покрытых обёрткой, можно получить оригинальный `*tgbotapi.BotAPI`: ```go api := bot.GetAPI() updates, _ := api.GetUpdates(tgbotapi.NewUpdate(0)) ``` ## Таблицы для Telegram `BuildTelegramTable` формирует ASCII-таблицу с рамками, готовую для отправки в `
` блоке. Заголовки выравниваются по центру, числа — по правому краю, текст — по левому. Корректно работает с кириллицей и другими широкими символами.
```go
rows := [][]string{
{"Товар", "Цена", "Кол-во"},
{"Яблоки", "120", "5"},
{"Бананы", "-90", "30"},
{"Киви", "+200", "1"},
}
table := notify.BuildTelegramTable(rows)
bot.SendHTMLMessage(chatID, "" + table + "
")
```
Результат в Telegram:
```
+--------+------+--------+
| Товар | Цена | Кол-во |
+--------+------+--------+
| Яблоки | 120 | 5 |
| Бананы | -90 | 30 |
| Киви | +200 | 1 |
+--------+------+--------+
```
## Email
### Отправка HTML-письма
```go
auth := notify.SmtpAuth{
Addr: "smtp.example.com:587",
Auth: smtp.PlainAuth("", "user@example.com", "password", "smtp.example.com"),
}
from := mail.Address{Name: "Система", Address: "noreply@example.com"}
to := mail.Address{Name: "Иванов", Address: "ivanov@example.com"}
err := notify.SendEmailHTML(auth, "Отчёт
Всё в порядке
", "Тема письма", from, to)
```
Можно указать несколько получателей:
```go
notify.SendEmailHTML(auth, body, subject, from, recipient1, recipient2, recipient3)
```
### Отправка с вложениями
Для писем с вложениями или расширенной настройкой используйте `SenndEmailMessage` с объектом `email.Message`:
```go
import "github.com/scorredoira/email"
mes := email.NewMessage("Тема", "Текст письма")
mes.From = from
mes.AddTo(to)
mes.AttachFile("/path/to/file.xlsx")
err := notify.SenndEmailMessage(auth, mes)
```
## Лицензия
MIT