mirror of
https://github.com/ManyakRus/starter.git
synced 2025-11-29 23:38:14 +02:00
сделал telegram_bot
This commit is contained in:
@@ -66,3 +66,6 @@ MINIO_SECRET_KEY=
|
|||||||
|
|
||||||
#TELEGRAM_API_KEY - API KEY from Telegram messenger
|
#TELEGRAM_API_KEY - API KEY from Telegram messenger
|
||||||
TELEGRAM_API_KEY=""
|
TELEGRAM_API_KEY=""
|
||||||
|
|
||||||
|
#TELEGRAM_CHAT_ID_TEST - integer ID of chat, for test only
|
||||||
|
TELEGRAM_CHAT_ID_TEST=
|
||||||
|
|||||||
19
microl/microl.go
Normal file
19
microl/microl.go
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
// пакет для микрофункций с логгером
|
||||||
|
|
||||||
|
package microl
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/ManyakRus/starter/log"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Getenv - возвращает переменную окружения
|
||||||
|
func Getenv(Name string, IsRequired bool) string {
|
||||||
|
TextError := "Need fill OS environment variable: "
|
||||||
|
Otvet := os.Getenv(Name)
|
||||||
|
if IsRequired == true && Otvet == "" {
|
||||||
|
log.Error(TextError + Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
return Otvet
|
||||||
|
}
|
||||||
1
microl/microl_test.go
Normal file
1
microl/microl_test.go
Normal file
@@ -0,0 +1 @@
|
|||||||
|
package microl
|
||||||
@@ -14,7 +14,8 @@ import (
|
|||||||
|
|
||||||
// SettingsINI - структура для хранения всех нужных переменных окружения
|
// SettingsINI - структура для хранения всех нужных переменных окружения
|
||||||
type SettingsINI struct {
|
type SettingsINI struct {
|
||||||
TELEGRAM_API_KEY string
|
TELEGRAM_API_KEY string
|
||||||
|
TELEGRAM_CHAT_ID_TEST int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// Settings хранит все нужные переменные окружения
|
// Settings хранит все нужные переменные окружения
|
||||||
@@ -32,10 +33,6 @@ var NeedReconnect bool
|
|||||||
// Connect - подключается к Telegram, или паника при ошибке
|
// Connect - подключается к Telegram, или паника при ошибке
|
||||||
func Connect() {
|
func Connect() {
|
||||||
|
|
||||||
if Settings.TELEGRAM_API_KEY == "" {
|
|
||||||
FillSettings()
|
|
||||||
}
|
|
||||||
|
|
||||||
err := Connect_err()
|
err := Connect_err()
|
||||||
LogInfo_Connected(err)
|
LogInfo_Connected(err)
|
||||||
|
|
||||||
@@ -45,6 +42,10 @@ func Connect() {
|
|||||||
func Connect_err() error {
|
func Connect_err() error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
|
if Settings.TELEGRAM_API_KEY == "" {
|
||||||
|
FillSettings()
|
||||||
|
}
|
||||||
|
|
||||||
Client, err = botapi.NewBotAPI(Settings.TELEGRAM_API_KEY)
|
Client, err = botapi.NewBotAPI(Settings.TELEGRAM_API_KEY)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -112,6 +113,25 @@ func Connect_err() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendMessage - отправка сообщения в мессенджер Телеграм
|
||||||
|
// возвращает:
|
||||||
|
// id = id отправленного сообщения в telegram
|
||||||
|
// err = error
|
||||||
|
func SendMessage(ChatID int64, Text string) (int, error) {
|
||||||
|
var ID int
|
||||||
|
var err error
|
||||||
|
|
||||||
|
msg := botapi.NewMessage(ChatID, Text)
|
||||||
|
|
||||||
|
Message, err := Client.Send(msg)
|
||||||
|
if err != nil {
|
||||||
|
return ID, err
|
||||||
|
}
|
||||||
|
ID = Message.MessageID
|
||||||
|
|
||||||
|
return ID, err
|
||||||
|
}
|
||||||
|
|
||||||
// Reconnect повторное подключение к Telegram, если оно отключено
|
// Reconnect повторное подключение к Telegram, если оно отключено
|
||||||
// или полная остановка программы
|
// или полная остановка программы
|
||||||
func Reconnect(err error) {
|
func Reconnect(err error) {
|
||||||
@@ -246,9 +266,35 @@ func FillSettings() {
|
|||||||
|
|
||||||
// заполним из переменных оуружения
|
// заполним из переменных оуружения
|
||||||
Settings.TELEGRAM_API_KEY = os.Getenv("TELEGRAM_API_KEY")
|
Settings.TELEGRAM_API_KEY = os.Getenv("TELEGRAM_API_KEY")
|
||||||
if Settings.TELEGRAM_API_KEY == "" {
|
|
||||||
log.Panicln("Need fill TELEGRAM_API_KEY ! in os.ENV ")
|
//
|
||||||
|
Name := ""
|
||||||
|
s := ""
|
||||||
|
|
||||||
|
//
|
||||||
|
Name = "TELEGRAM_API_KEY"
|
||||||
|
s = Getenv(Name, true)
|
||||||
|
Settings.TELEGRAM_API_KEY = s
|
||||||
|
|
||||||
|
Name = "TELEGRAM_CHAT_ID_TEST"
|
||||||
|
s = Getenv(Name, true)
|
||||||
|
i, err := micro.Int64FromString(s)
|
||||||
|
if err != nil {
|
||||||
|
log.Panicf("TELEGRAM_CHAT_ID_TEST: %s, error: %v", s, err)
|
||||||
}
|
}
|
||||||
|
Settings.TELEGRAM_CHAT_ID_TEST = i
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getenv - возвращает переменную окружения
|
||||||
|
func Getenv(Name string, IsRequired bool) string {
|
||||||
|
TextError := "Need fill OS environment variable: "
|
||||||
|
Otvet := os.Getenv(Name)
|
||||||
|
if IsRequired == true && Otvet == "" {
|
||||||
|
log.Error(TextError + Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
return Otvet
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetConnection - возвращает соединение к нужной базе данных
|
// GetConnection - возвращает соединение к нужной базе данных
|
||||||
@@ -263,9 +309,9 @@ func GetConnection() *botapi.BotAPI {
|
|||||||
// LogInfo_Connected - выводит сообщение в Лог, или паника при ошибке
|
// LogInfo_Connected - выводит сообщение в Лог, или паника при ошибке
|
||||||
func LogInfo_Connected(err error) {
|
func LogInfo_Connected(err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Panicf("Telegram bot not connected with API KEY: %s, error: %w", Settings.TELEGRAM_API_KEY, err)
|
log.Panicf("Telegram bot not connected with API KEY: %s, error: %v", Settings.TELEGRAM_API_KEY, err)
|
||||||
} else {
|
} else {
|
||||||
log.Info("Telegram bot Connected. With API KEY: %s", Settings.TELEGRAM_API_KEY)
|
log.Infof("Telegram bot Connected. With API KEY: %s", Settings.TELEGRAM_API_KEY)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package telegram_bot
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"testing"
|
"testing"
|
||||||
//log "github.com/sirupsen/logrus"
|
"time"
|
||||||
|
|
||||||
"github.com/ManyakRus/starter/config_main"
|
"github.com/ManyakRus/starter/config_main"
|
||||||
"github.com/ManyakRus/starter/contextmain"
|
"github.com/ManyakRus/starter/contextmain"
|
||||||
@@ -60,14 +60,25 @@ func TestConnect(t *testing.T) {
|
|||||||
//ProgramDir := micro.ProgramDir_Common()
|
//ProgramDir := micro.ProgramDir_Common()
|
||||||
config_main.LoadEnv()
|
config_main.LoadEnv()
|
||||||
Connect()
|
Connect()
|
||||||
|
defer CloseConnection()
|
||||||
CloseConnection()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetConnection(t *testing.T) {
|
func TestGetConnection(t *testing.T) {
|
||||||
//ProgramDir := micro.ProgramDir_Common()
|
|
||||||
config_main.LoadEnv()
|
config_main.LoadEnv()
|
||||||
GetConnection()
|
GetConnection()
|
||||||
|
defer CloseConnection()
|
||||||
CloseConnection()
|
}
|
||||||
|
|
||||||
|
func TestSendMessage(t *testing.T) {
|
||||||
|
config_main.LoadEnv()
|
||||||
|
GetConnection()
|
||||||
|
defer CloseConnection()
|
||||||
|
|
||||||
|
Text := "test " + time.Now().String()
|
||||||
|
ID := Settings.TELEGRAM_CHAT_ID_TEST
|
||||||
|
_, err := SendMessage(ID, Text)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("TestSendMessage() error: ", err)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user