Skip to content

Commit ee157c0

Browse files
author
soaska
committed
/help update
1 parent c2d9137 commit ee157c0

2 files changed

Lines changed: 31 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
### 1. Telegram Bot (`telegram-bot/`)
1616
- Обработка команд и сообщений от пользователей
1717
- Создание задач на обработку видео и замену лиц
18+
- Сжатие изображений в JPEG с настраиваемым качеством
1819
- Отправка результатов пользователям
1920
- Управление балансом монет
2021
- Отслеживание статуса задач

telegram-bot/main.go

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"log"
88
"os"
99
"path/filepath"
10+
"strconv"
1011
"strings"
1112
"time"
1213

@@ -19,8 +20,8 @@ var (
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 {
268269
type 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

Comments
 (0)