package main import ( "fmt" "log" "strings" "github.com/NicoNex/echotron/v3" "github.com/google/uuid" ) func (b *bot) inlineHandler(update *echotron.Update) { cache := b.doomer.db.Prefix(FileIDItem) if update.InlineQuery.Query == "" { return } text := update.InlineQuery.Query bgTypes := []BackgroundType{Black, White, Gradient} results := []echotron.InlineQueryResult{} for _, v := range bgTypes { key := hash(text) + fmt.Sprint(v) fileid, err := cache.GetItem(key) if err != nil { log.Println("Image does not exist") img, err := b.doomer.GetImage(text, v) if err != nil { log.Printf("Cannot gen image of type %v: %v\n", v, err) continue } else { res, err := b.SendPhoto(echotron.NewInputFileBytes(key+".png", *img), b.logChatID, &echotron.PhotoOptions{}) if err != nil { log.Printf("Cannot upload image to log chat: %v", err) continue } fileid = []byte(res.Result.Photo[0].FileID) cache.StoreItem(key, []byte(fileid)) } } results = append(results, echotron.InlineQueryResultCachedPhoto{ ID: uuid.NewString(), PhotoFileID: string(fileid), Type: echotron.InlinePhoto, }) } log.Printf("%v", results) _, err := b.AnswerInlineQuery(update.InlineQuery.ID, results, &echotron.InlineQueryOptions{ CacheTime: 2, SwitchPmText: "Сгенерировать PNG качеством повыше", SwitchPmParameter: "doom", }) if err != nil { log.Printf("Cannot send answer to query: %v", err) } } func (b *bot) genHandler(update *echotron.Update) { text := update.Message.Text[4:] if strings.TrimSpace(text) == "" { b.SendMessage("Добавьте к команде любой текст", update.Message.Chat.ID, &echotron.MessageOptions{}) return } bgTypes := []BackgroundType{Transparent, Black, White, Gradient} group := []echotron.GroupableInputMedia{} for _, v := range bgTypes { img, err := b.doomer.GetImage(text, v) if err != nil { log.Printf("Cannot get Doomer image: %v", err) } group = append(group, echotron.InputMediaDocument{ Type: echotron.MediaTypeDocument, Media: echotron.NewInputFileBytes(text+fmt.Sprint(v)+".png", *img), }) } _, err := b.SendMediaGroup(update.Message.Chat.ID, group, &echotron.MediaGroupOptions{}) if err != nil { log.Println(err) } } const helpMessage string = "1 \\- Используйте команду `/gen Ваш текст`, чтобы сгенерировать четыре PNG\\-изображения в разных цветовых исполнениях, включая прозрачный фон\\. Файлы отправляются документами для сохранения качества\\.\n" + "2 \\- Просто упомяните бота в любом чате при помощи `@doomtextbot Ваш текст` с последующим текстом, чтобы быстро сгенерировать три варианта картинки для отправки в чат\\." func (b *bot) showHelp(update *echotron.Update) { _, err := b.SendMessage(helpMessage, update.Message.Chat.ID, &echotron.MessageOptions{ParseMode: echotron.MarkdownV2}) if err != nil { log.Printf("Cannot show help message: %v", err) } }