55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package bot
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/celestix/gotgproto"
|
|
"github.com/celestix/gotgproto/sessionMaker"
|
|
"github.com/glebarez/sqlite"
|
|
"github.com/krau/SaveAny-Bot/config"
|
|
"github.com/krau/SaveAny-Bot/logger"
|
|
)
|
|
|
|
var Client *gotgproto.Client
|
|
|
|
func Init() {
|
|
logger.L.Info("Initializing client...")
|
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
|
defer cancel()
|
|
|
|
resultChan := make(chan struct {
|
|
client *gotgproto.Client
|
|
err error
|
|
})
|
|
|
|
go func() {
|
|
client, err := gotgproto.NewClient(int(config.Cfg.Telegram.AppID), config.Cfg.Telegram.AppHash, gotgproto.ClientTypeBot(config.Cfg.Telegram.Token),
|
|
&gotgproto.ClientOpts{
|
|
Session: sessionMaker.SqlSession(sqlite.Open("data/session.db")),
|
|
DisableCopyright: true,
|
|
Middlewares: FloodWaitMiddleware(),
|
|
},
|
|
)
|
|
resultChan <- struct {
|
|
client *gotgproto.Client
|
|
err error
|
|
}{client, err}
|
|
}()
|
|
|
|
select {
|
|
case <-ctx.Done():
|
|
logger.L.Fatal("Failed to initialize client")
|
|
os.Exit(1)
|
|
case result := <-resultChan:
|
|
if result.err != nil {
|
|
logger.L.Fatalf("Failed to initialize client: %s", result.err)
|
|
os.Exit(1)
|
|
}
|
|
Client = result.client
|
|
RegisterHandlers(Client.Dispatcher)
|
|
logger.L.Info("Client initialized")
|
|
}
|
|
}
|