77 "log"
88 "os"
99 "path/filepath"
10+ "strconv"
1011 "strings"
1112 "time"
1213
1920 GitMessage = "unknown"
2021)
2122
22- // Handle /compress command - compress JPG to 12% quality (FREE for users with positive balance)
23- func handleCompressImage (bot * tgbotapi.BotAPI , chatID int64 , userID string , fileID string ) {
23+ // Handle /compress command - compress JPG (FREE for users with positive balance)
24+ func handleCompressImage (bot * tgbotapi.BotAPI , chatID int64 , userID string , fileID string , quality int ) {
2425 // Check user has positive balance (feature is free but requires account with coins)
2526 userData , err := getUserInfo (int (chatID ))
2627 if err != nil {
@@ -87,8 +88,8 @@ func handleCompressImage(bot *tgbotapi.BotAPI, chatID int64, userID string, file
8788 }
8889 defer outputFile .Close ()
8990
90- // Encode with 12% quality
91- options := & jpeg.Options {Quality : 12 }
91+ // Encode with specified quality
92+ options := & jpeg.Options {Quality : quality }
9293 err = jpeg .Encode (outputFile , img , options )
9394 if err != nil {
9495 log .Printf ("Ошибка кодирования изображения: %v" , err )
@@ -99,7 +100,7 @@ func handleCompressImage(bot *tgbotapi.BotAPI, chatID int64, userID string, file
99100
100101 // Send compressed image back
101102 photo := tgbotapi .NewPhoto (chatID , tgbotapi .FilePath (outputPath ))
102- photo .Caption = "Изображение сжато до 12% качества."
103+ photo .Caption = fmt . Sprintf ( "Изображение сжато до %d%% качества." , quality )
103104 _ , err = bot .Send (photo )
104105 if err != nil {
105106 log .Printf ("Ошибка отправки сжатого изображения: %v" , err )
@@ -268,6 +269,7 @@ func handleResetErrors(bot *tgbotapi.BotAPI, update tgbotapi.Update) error {
268269type UserSession struct {
269270 FaceFileID string // временное хранение ID файла фотографии
270271 WaitingForCompress bool // ожидание фото для сжатия
272+ CompressQuality int // качество сжатия JPEG (1-100)
271273}
272274
273275// Function to get or create user session
@@ -411,7 +413,13 @@ func main() {
411413 "• Отправьте фото лица\n " +
412414 "• Отправьте видео\n " +
413415 "• Дождитесь обработки\n \n " +
414- "🗜 /compress - сжать JPG изображение до 12% качества (бесплатно)\n \n " +
416+ "🗜 /compress [качество] - сжать фото в JPEG (бесплатно):\n " +
417+ "• Введите команду с нужным качеством\n " +
418+ "• Отправляйте фото для сжатия (можно несколько)\n " +
419+ "• Нажмите 'Отменить' или /cancel для выхода\n " +
420+ "• Примеры: /compress или /compress 80\n " +
421+ "• Качество: 1-100 (по умолчанию 12)\n " +
422+ "• Требуется положительный баланс монет\n \n " +
415423 "📊 /status - проверить статус и баланс\n " +
416424 "❓ /help - показать это сообщение\n \n " +
417425 "📢 Новости и обновления: https://t.me/+HGQVwMhFzIExZDNi"
@@ -434,8 +442,22 @@ func main() {
434442
435443 // compress command
436444 if update .Message .Text != "" && strings .HasPrefix (strings .ToLower (update .Message .Text ), "/compress" ) {
445+ parts := strings .Fields (update .Message .Text )
446+ quality := 12 // default quality
447+
448+ if len (parts ) > 1 {
449+ parsedQuality , err := strconv .Atoi (parts [1 ])
450+ if err != nil || parsedQuality < 1 || parsedQuality > 100 {
451+ msg := tgbotapi .NewMessage (update .Message .Chat .ID , "Неверное значение качества. Используйте число от 1 до 100.\n Пример: /compress 80" )
452+ bot .Send (msg )
453+ continue
454+ }
455+ quality = parsedQuality
456+ }
457+
437458 session .WaitingForCompress = true
438- msg := tgbotapi .NewMessage (update .Message .Chat .ID , "Отправляйте изображения для сжатия до 12% качества.\n Нажмите \" Отменить\" или /cancel когда закончите." )
459+ session .CompressQuality = quality
460+ msg := tgbotapi .NewMessage (update .Message .Chat .ID , fmt .Sprintf ("Отправляйте изображения для сжатия до %d%% качества.\n Нажмите \" Отменить\" или /cancel когда закончите." , quality ))
439461 cancelMarkup := tgbotapi .NewReplyKeyboard (
440462 tgbotapi .NewKeyboardButtonRow (
441463 tgbotapi .NewKeyboardButton ("Отменить" ),
@@ -456,7 +478,7 @@ func main() {
456478 bot .Send (msg )
457479
458480 // Запускаем обработку в горутине
459- go handleCompressImage (bot , update .Message .Chat .ID , pbUserID , fileID )
481+ go handleCompressImage (bot , update .Message .Chat .ID , pbUserID , fileID , session . CompressQuality )
460482
461483 continue
462484 }
0 commit comments