1
0
mirror of https://github.com/ManyakRus/starter.git synced 2024-11-21 18:16:31 +02:00

сделал telegram_bot

This commit is contained in:
Nikitin Aleksandr 2024-11-11 16:36:51 +03:00
parent cf99f1aad5
commit 942977504e
5 changed files with 96 additions and 16 deletions

View File

@ -65,4 +65,7 @@ MINIO_KEY=
MINIO_SECRET_KEY=
#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
View 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
View File

@ -0,0 +1 @@
package microl

View File

@ -14,7 +14,8 @@ import (
// SettingsINI - структура для хранения всех нужных переменных окружения
type SettingsINI struct {
TELEGRAM_API_KEY string
TELEGRAM_API_KEY string
TELEGRAM_CHAT_ID_TEST int64
}
// Settings хранит все нужные переменные окружения
@ -32,10 +33,6 @@ var NeedReconnect bool
// Connect - подключается к Telegram, или паника при ошибке
func Connect() {
if Settings.TELEGRAM_API_KEY == "" {
FillSettings()
}
err := Connect_err()
LogInfo_Connected(err)
@ -45,6 +42,10 @@ func Connect() {
func Connect_err() error {
var err error
if Settings.TELEGRAM_API_KEY == "" {
FillSettings()
}
Client, err = botapi.NewBotAPI(Settings.TELEGRAM_API_KEY)
if err != nil {
return err
@ -112,6 +113,25 @@ func Connect_err() error {
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, если оно отключено
// или полная остановка программы
func Reconnect(err error) {
@ -246,9 +266,35 @@ func FillSettings() {
// заполним из переменных оуружения
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 - возвращает соединение к нужной базе данных
@ -263,9 +309,9 @@ func GetConnection() *botapi.BotAPI {
// LogInfo_Connected - выводит сообщение в Лог, или паника при ошибке
func LogInfo_Connected(err error) {
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 {
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)
}
}

View File

@ -3,7 +3,7 @@ package telegram_bot
import (
"errors"
"testing"
//log "github.com/sirupsen/logrus"
"time"
"github.com/ManyakRus/starter/config_main"
"github.com/ManyakRus/starter/contextmain"
@ -60,14 +60,25 @@ func TestConnect(t *testing.T) {
//ProgramDir := micro.ProgramDir_Common()
config_main.LoadEnv()
Connect()
CloseConnection()
defer CloseConnection()
}
func TestGetConnection(t *testing.T) {
//ProgramDir := micro.ProgramDir_Common()
config_main.LoadEnv()
GetConnection()
CloseConnection()
defer 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)
}
}