mirror of
https://github.com/krau/SaveAny-Bot.git
synced 2026-09-07 00:27:36 +08:00
feat: enhance user client context management and improve error handling
This commit is contained in:
@@ -17,6 +17,12 @@ import (
|
|||||||
"github.com/krau/SaveAny-Bot/database"
|
"github.com/krau/SaveAny-Bot/database"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var ectx *ext.Context
|
||||||
|
|
||||||
|
func ExtContext() *ext.Context {
|
||||||
|
return ectx
|
||||||
|
}
|
||||||
|
|
||||||
func Init(ctx context.Context) <-chan struct{} {
|
func Init(ctx context.Context) <-chan struct{} {
|
||||||
log.FromContext(ctx).Info("初始化 Bot...")
|
log.FromContext(ctx).Info("初始化 Bot...")
|
||||||
resultChan := make(chan struct {
|
resultChan := make(chan struct {
|
||||||
@@ -88,6 +94,7 @@ func Init(ctx context.Context) <-chan struct{} {
|
|||||||
log.FromContext(ctx).Fatalf("初始化 Bot 失败: %s", result.err)
|
log.FromContext(ctx).Fatalf("初始化 Bot 失败: %s", result.err)
|
||||||
}
|
}
|
||||||
handlers.Register(result.client.Dispatcher)
|
handlers.Register(result.client.Dispatcher)
|
||||||
|
ectx = result.client.CreateContext()
|
||||||
log.FromContext(ctx).Info("Bot 初始化完成")
|
log.FromContext(ctx).Info("Bot 初始化完成")
|
||||||
}
|
}
|
||||||
return shouldRestart
|
return shouldRestart
|
||||||
|
|||||||
@@ -110,8 +110,10 @@ func GetFilesFromUpdateLinkMessageWithReplyEdit(ctx *ext.Context, update *ext.Up
|
|||||||
|
|
||||||
tctx := ctx
|
tctx := ctx
|
||||||
if config.C().Telegram.Userbot.Enable {
|
if config.C().Telegram.Userbot.Enable {
|
||||||
|
if uc.GetCtx() != nil {
|
||||||
tctx = uc.GetCtx()
|
tctx = uc.GetCtx()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for _, link := range msgLinks {
|
for _, link := range msgLinks {
|
||||||
linkUrl, err := url.Parse(link)
|
linkUrl, err := url.Parse(link)
|
||||||
|
|||||||
@@ -152,6 +152,9 @@ func handleUnwatchCmd(ctx *ext.Context, update *ext.Update) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func listenMediaMessageEvent(ch chan userclient.MediaMessageEvent) {
|
func listenMediaMessageEvent(ch chan userclient.MediaMessageEvent) {
|
||||||
|
if userclient.GetCtx() == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
logger := log.FromContext(userclient.GetCtx())
|
logger := log.FromContext(userclient.GetCtx())
|
||||||
for event := range ch {
|
for event := range ch {
|
||||||
logger.Debug("Received media message event", "chat_id", event.ChatID, "file_name", event.File.Name())
|
logger.Debug("Received media message event", "chat_id", event.ChatID, "file_name", event.File.Name())
|
||||||
|
|||||||
@@ -23,23 +23,16 @@ var uc *gotgproto.Client
|
|||||||
var ectx *ext.Context
|
var ectx *ext.Context
|
||||||
|
|
||||||
func GetCtx() *ext.Context {
|
func GetCtx() *ext.Context {
|
||||||
if uc == nil {
|
|
||||||
panic("User client is not initialized, please call Login first")
|
|
||||||
}
|
|
||||||
if ectx != nil {
|
if ectx != nil {
|
||||||
return ectx
|
return ectx
|
||||||
}
|
}
|
||||||
|
if uc == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
ectx = uc.CreateContext()
|
ectx = uc.CreateContext()
|
||||||
return ectx
|
return ectx
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetClient() *gotgproto.Client {
|
|
||||||
if uc == nil {
|
|
||||||
panic("User client is not initialized, please call Login first")
|
|
||||||
}
|
|
||||||
return uc
|
|
||||||
}
|
|
||||||
|
|
||||||
func Login(ctx context.Context) (*gotgproto.Client, error) {
|
func Login(ctx context.Context) (*gotgproto.Client, error) {
|
||||||
log.FromContext(ctx).Debug("Logging in user client")
|
log.FromContext(ctx).Debug("Logging in user client")
|
||||||
if uc != nil {
|
if uc != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user