mirror of
https://github.com/BEARlogin/max-telegram-bridge-bot.git
synced 2026-04-28 03:39:46 +00:00
Update max.go
This commit is contained in:
parent
364aab9730
commit
f2be13a0fb
1 changed files with 24 additions and 6 deletions
30
max.go
30
max.go
|
|
@ -2,6 +2,7 @@ package main
|
|||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
|
|
@ -114,11 +115,11 @@ func (b *Bridge) listenMax(ctx context.Context) {
|
|||
|
||||
if mediaURL != "" {
|
||||
// Скачиваем медиа и отправляем editMessageMedia
|
||||
data, dlErr := b.downloadURL(mediaURL)
|
||||
data, name, dlErr := b.downloadURLWithLimit(mediaURL, b.cfg.maxMaxFileBytes())
|
||||
if dlErr != nil {
|
||||
slog.Error("MAX→TG edit media download failed", "err", dlErr)
|
||||
} else {
|
||||
fb := tgbotapi.FileBytes{Name: fileNameFromURL(mediaURL), Bytes: data}
|
||||
fb := tgbotapi.FileBytes{Name: name, Bytes: data}
|
||||
var media interface{}
|
||||
switch mediaType {
|
||||
case "photo":
|
||||
|
|
@ -144,7 +145,7 @@ func (b *Bridge) listenMax(ctx context.Context) {
|
|||
if _, err := b.tgBot.Send(editMedia); err != nil {
|
||||
slog.Error("MAX→TG edit media failed", "err", err, "uid", editUpd.Message.Sender.UserId)
|
||||
// Fallback — отправляем как новое сообщение
|
||||
go b.sendTgMediaFromURL(tgChatID, mediaURL, mediaType, fwd, "", 0)
|
||||
go b.sendTgMediaFromURL(tgChatID, mediaURL, mediaType, fwd, "", 0, b.cfg.maxMaxFileBytes())
|
||||
} else {
|
||||
slog.Info("MAX→TG edited media", "tgMsg", tgMsgID, "type", mediaType, "uid", editUpd.Message.Sender.UserId)
|
||||
}
|
||||
|
|
@ -973,7 +974,15 @@ func (b *Bridge) forwardMaxToTg(ctx context.Context, msgUpd *maxschemes.MessageC
|
|||
|
||||
if len(albumMedia) == 1 {
|
||||
// Одно вложение — отправляем обычным сообщением (альбом из 1 элемента не имеет reply)
|
||||
sent, sendErr = b.sendTgMediaFromURL(tgChatID, qAttURL, qAttType, htmlCaption, pm, replyToID)
|
||||
sent, sendErr = b.sendTgMediaFromURL(tgChatID, qAttURL, qAttType, htmlCaption, pm, replyToID, b.cfg.maxMaxFileBytes())
|
||||
var e *ErrFileTooLarge
|
||||
if errors.As(sendErr, &e) {
|
||||
slog.Warn("MAX→TG media too big", "name", e.Name, "size", e.Size)
|
||||
m := maxbot.NewMessage().SetChat(chatID).SetText(
|
||||
fmt.Sprintf("⚠️ Файл \"%s\" слишком большой для пересылки (%s). Максимальный размер файла %d МБ.",
|
||||
e.Name, formatFileSize(int(e.Size)), b.cfg.MaxMaxFileSizeMB))
|
||||
b.maxApi.Messages.Send(ctx, m)
|
||||
}
|
||||
} else {
|
||||
// Несколько — отправляем как media group (альбом)
|
||||
cfg := tgbotapi.NewMediaGroup(tgChatID, albumMedia)
|
||||
|
|
@ -992,9 +1001,18 @@ func (b *Bridge) forwardMaxToTg(ctx context.Context, msgUpd *maxschemes.MessageC
|
|||
|
||||
// Отправляем остальные вложения (аудио, файлы, стикеры) по одному
|
||||
for _, sm := range soloMedia {
|
||||
s, err := b.sendTgMediaFromURL(tgChatID, sm.url, sm.attType, "", "", 0, sm.name)
|
||||
s, err := b.sendTgMediaFromURL(tgChatID, sm.url, sm.attType, "", "", 0, b.cfg.maxMaxFileBytes(), sm.name)
|
||||
if err != nil {
|
||||
slog.Error("MAX→TG solo media send failed", "type", sm.attType, "err", err)
|
||||
var e *ErrFileTooLarge
|
||||
if errors.As(err, &e) {
|
||||
slog.Warn("MAX→TG solo media too big", "name", e.Name, "size", e.Size)
|
||||
m := maxbot.NewMessage().SetChat(chatID).SetText(
|
||||
fmt.Sprintf("⚠️ Файл \"%s\" слишком большой для пересылки (%s). Максимальный размер файла %d МБ.",
|
||||
e.Name, formatFileSize(int(e.Size)), b.cfg.MaxMaxFileSizeMB))
|
||||
b.maxApi.Messages.Send(ctx, m)
|
||||
} else {
|
||||
slog.Error("MAX→TG solo media send failed", "type", sm.attType, "err", err)
|
||||
}
|
||||
if sendErr == nil {
|
||||
sendErr = err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue