2022-12-04 17:30:08 +03:00
package main
import (
"fmt"
"log"
"strings"
"github.com/NicoNex/echotron/v3"
"github.com/google/uuid"
)
func ( b * bot ) inlineHandler ( update * echotron . Update ) {
2022-12-06 00:57:09 +03:00
cache := b . doomer . db . Prefix ( FileIDItem )
2022-12-04 17:30:08 +03:00
if update . InlineQuery . Query == "" {
return
}
text := update . InlineQuery . Query
bgTypes := [ ] BackgroundType { Black , White , Gradient }
results := [ ] echotron . InlineQueryResult { }
for _ , v := range bgTypes {
2022-12-06 00:57:09 +03:00
key := hash ( text ) + fmt . Sprint ( v )
fileid , err := cache . GetItem ( key )
2022-12-04 17:30:08 +03:00
if err != nil {
log . Println ( "Image does not exist" )
2022-12-06 00:57:09 +03:00
img , err := b . doomer . GetImage ( text , v )
2022-12-04 17:30:08 +03:00
if err != nil {
log . Printf ( "Cannot gen image of type %v: %v\n" , v , err )
continue
} else {
2022-12-06 00:57:09 +03:00
res , err := b . SendPhoto ( echotron . NewInputFileBytes ( key + ".png" , * img ) , b . logChatID , & echotron . PhotoOptions { } )
2022-12-04 17:30:08 +03:00
if err != nil {
log . Printf ( "Cannot upload image to log chat: %v" , err )
continue
}
fileid = [ ] byte ( res . Result . Photo [ 0 ] . FileID )
2022-12-06 00:57:09 +03:00
cache . StoreItem ( key , [ ] byte ( fileid ) )
2022-12-04 17:30:08 +03:00
}
}
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 {
2022-12-06 00:57:09 +03:00
CacheTime : 2 ,
2022-12-04 17:30:08 +03:00
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 {
2022-12-06 00:57:09 +03:00
img , err := b . doomer . GetImage ( text , v )
2022-12-04 17:30:08 +03:00
if err != nil {
2022-12-06 00:57:09 +03:00
log . Printf ( "Cannot get Doomer image: %v" , err )
2022-12-04 17:30:08 +03:00
}
group = append ( group , echotron . InputMediaDocument {
Type : echotron . MediaTypeDocument ,
2022-12-06 00:57:09 +03:00
Media : echotron . NewInputFileBytes ( text + fmt . Sprint ( v ) + ".png" , * img ) ,
2022-12-04 17:30:08 +03:00
} )
}
_ , 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 )
}
}