mirror of
https://github.com/BEARlogin/max-telegram-bridge-bot.git
synced 2026-07-10 01:28:38 +00:00
Some checks failed
Build / build (push) Has been cancelled
- Pluggable optional addons via `addon` build tag: Addon interface, stub for the public build, generic b.extraCommands injection so the core stays agnostic of any extension. README section + working examples/echoaddon. - publishTgCrosspost: единая точка кросспоста TG→MAX (формат entity→markdown + замены), переиспользуется вместо дублирования. - TG_API_URL local mode: getFile отдаёт абсолютный путь — срезаем префикс до токена, чтобы файлы отдавались через статику (nginx). - Автозамены: понятная инструкция вместо "from | to", человеко-читаемые ошибки. - Очередь доставки: причина + номер поста при недоставке в MAX, быстрый дроп перманентных ошибок (send-message.empty, нет прав) вместо 30 ретраев. - ForwardOrigin msg_id проброшен в Addon (старт операций с конкретного поста). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
40 lines
1.7 KiB
Text
40 lines
1.7 KiB
Text
//go:build addon
|
||
|
||
// ОБРАЗЕЦ склейки расширения с бриджом.
|
||
//
|
||
// Как использовать:
|
||
// 1. Скопируйте этот файл в КОРЕНЬ проекта под именем addon_local.go
|
||
// (оно уже в .gitignore — в публичный репозиторий не попадёт):
|
||
// cp examples/addon_local.go.example addon_local.go
|
||
// 2. Соберите с тегом addon:
|
||
// go build -tags addon -o bridge .
|
||
// 3. Запустите бридж — в личке боту заработает команда /echo.
|
||
//
|
||
// Файл собирается ТОЛЬКО с `-tags addon`. Без тега используется addon_stub.go,
|
||
// где loadAddon возвращает nil и расширения выключены.
|
||
|
||
package main
|
||
|
||
import (
|
||
"context"
|
||
|
||
"bearlogin-bridge/examples/echoaddon"
|
||
)
|
||
|
||
// loadAddon вызывается ядром при старте. Здесь создаётся экземпляр расширения и
|
||
// пробрасываются нужные операции бриджа. Ядро о внутренностях расширения не знает.
|
||
func loadAddon(b *Bridge) Addon {
|
||
// Команда расширения в меню бота. Ядро покажет её в setMyCommands, не зная
|
||
// её семантику (см. b.extraCommands в bridge.go).
|
||
b.extraCommands = append(b.extraCommands, BotCommand{
|
||
Command: "echo",
|
||
Description: "Повторить текст (пример аддона)",
|
||
})
|
||
|
||
return echoaddon.New(echoaddon.Deps{
|
||
Reply: func(ctx context.Context, chatID int64, text string) error {
|
||
_, err := b.tg.SendMessage(ctx, chatID, text, nil)
|
||
return err
|
||
},
|
||
})
|
||
}
|