govd/bot/handlers/start.go
stefanodvx 93e964a28b instagram: new extraction method
new extraction method first tries to fetch content directly from instagram graphql API, fallback to html embed page. in case every method fail, rely on 3rd party
2025-04-23 18:52:05 +02:00

91 lines
1.7 KiB
Go

package handlers
import (
"fmt"
"os"
"github.com/PaulSonOfLars/gotgbot/v2"
"github.com/PaulSonOfLars/gotgbot/v2/ext"
)
var startMessage = "govd is an open-source telegram bot " +
"that allows you to download medias from " +
"various platforms."
func getStartKeyboard(bot *gotgbot.Bot) gotgbot.InlineKeyboardMarkup {
return gotgbot.InlineKeyboardMarkup{
InlineKeyboard: [][]gotgbot.InlineKeyboardButton{
{
{
Text: "add to group",
Url: fmt.Sprintf(
"https://t.me/%s?startgroup=true",
bot.Username,
),
},
},
{
{
Text: "usage",
CallbackData: "help",
},
{
Text: "stats",
CallbackData: "stats",
},
},
{
{
Text: "extractors",
CallbackData: "extractors",
},
{
Text: "support",
Url: "https://t.me/govdsupport",
},
},
{
{
Text: "instances",
CallbackData: "instances",
},
{
Text: "github",
Url: os.Getenv("REPO_URL"),
},
},
},
}
}
func StartHandler(bot *gotgbot.Bot, ctx *ext.Context) error {
if ctx.EffectiveMessage.Chat.Type != "private" {
ctx.EffectiveMessage.Reply(
bot,
"i'm online! i'll download every media in this group.",
nil,
)
return nil
}
keyboard := getStartKeyboard(bot)
if ctx.Update.Message != nil {
ctx.EffectiveMessage.Reply(
bot,
startMessage,
&gotgbot.SendMessageOpts{
ReplyMarkup: &keyboard,
},
)
} else if ctx.Update.CallbackQuery != nil {
ctx.CallbackQuery.Answer(bot, nil)
ctx.EffectiveMessage.EditText(
bot,
startMessage,
&gotgbot.EditMessageTextOpts{
ReplyMarkup: keyboard,
},
)
}
return nil
}