🚸 Improve user experience by adding buttons menu

Need to return inline-buttons for fast calling bot pack
This commit is contained in:
Maxim Lebedev 2018-01-18 04:50:47 +05:00
parent 133a271831
commit ccf7a63be2
No known key found for this signature in database
GPG Key ID: F8978F46FF0FFA4F
12 changed files with 159 additions and 88 deletions

25
add.go
View File

@ -13,6 +13,11 @@ func commandAdd(msg *tg.Message, pack bool) {
reply := tg.NewMessage(msg.Chat.ID, T("reply_add_sticker"))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = tg.NewReplyKeyboardMarkup(
tg.NewReplyKeyboardRow(
tg.NewReplyKeyboardButton(T("button_cancel")),
),
)
err = dbChangeUserState(msg.From.ID, stateAddSticker)
errCheck(err)
@ -74,15 +79,7 @@ func actionAdd(msg *tg.Message, pack bool) {
"SetTitle": set.Title,
})
} else {
markup := tg.NewInlineKeyboardMarkup(
tg.NewInlineKeyboardRow(
tg.NewInlineKeyboardButtonSwitch(
T("button_share"),
" ",
),
),
)
reply.ReplyMarkup = &markup
reply.ReplyMarkup = getCancelButton(T)
}
default:
exists, err := dbAddSticker(
@ -101,15 +98,7 @@ func actionAdd(msg *tg.Message, pack bool) {
msg.Sticker.Emoji = " "
}
markup := tg.NewInlineKeyboardMarkup(
tg.NewInlineKeyboardRow(
tg.NewInlineKeyboardButtonSwitch(
T("button_share"),
msg.Sticker.Emoji,
),
),
)
reply.ReplyMarkup = &markup
reply.ReplyMarkup = getCancelButton(T)
}
_, err = bot.SendMessage(reply)

View File

@ -31,6 +31,8 @@ func commandCancel(msg *tg.Message) {
errCheck(err)
reply := tg.NewMessage(msg.Chat.ID, text)
reply.ReplyMarkup = getMenuKeyboard(T)
_, err = bot.SendMessage(reply)
errCheck(err)
}

View File

@ -19,6 +19,7 @@ func commandDelete(msg *tg.Message, pack bool) {
errCheck(err)
reply := tg.NewMessage(msg.Chat.ID, T("error_empty_del"))
reply.ReplyMarkup = getMenuKeyboard(T)
_, err = bot.SendMessage(reply)
errCheck(err)
return
@ -26,26 +27,17 @@ func commandDelete(msg *tg.Message, pack bool) {
reply := tg.NewMessage(msg.Chat.ID, T("reply_del_sticker"))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = getCancelButton(T)
err = dbChangeUserState(msg.From.ID, stateDeleteSticker)
errCheck(err)
if pack {
reply.Text = T("reply_del_pack")
err = dbChangeUserState(msg.From.ID, stateDeletePack)
errCheck(err)
}
markup := tg.NewInlineKeyboardMarkup(
tg.NewInlineKeyboardRow(
tg.NewInlineKeyboardButtonSwitchSelf(
T("button_del"),
" ",
),
),
)
reply.ReplyMarkup = &markup
reply.Text = T("reply_del_pack")
}
_, err = bot.SendMessage(reply)
errCheck(err)
@ -59,6 +51,7 @@ func actionDelete(msg *tg.Message, pack bool) {
reply := tg.NewMessage(msg.Chat.ID, T("success_del_sticker"))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = getCancelButton(T)
var notExist bool
if pack {

View File

@ -11,12 +11,6 @@ func commandHelp(msg *tg.Message) {
T, err := switchLocale(msg.From.LanguageCode)
errCheck(err)
markup := tg.NewInlineKeyboardMarkup(
tg.NewInlineKeyboardRow(
tg.NewInlineKeyboardButtonSwitch(T("button_share"), " "),
),
)
reply := tg.NewMessage(
msg.Chat.ID, T("reply_help", map[string]interface{}{
"AddStickerCommand": cmdAddSticker,
@ -29,7 +23,7 @@ func commandHelp(msg *tg.Message) {
}),
)
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = &markup
reply.ReplyMarkup = getMenuKeyboard(T)
_, err = bot.SendMessage(reply)
errCheck(err)

30
helpers.go Normal file
View File

@ -0,0 +1,30 @@
package main
import (
"github.com/nicksnyder/go-i18n/i18n"
tg "github.com/toby3d/telegram"
)
func getMenuKeyboard(T i18n.TranslateFunc) *tg.ReplyKeyboardMarkup {
return tg.NewReplyKeyboardMarkup(
tg.NewReplyKeyboardRow(
tg.NewReplyKeyboardButton(T("button_add_sticker")),
tg.NewReplyKeyboardButton(T("button_add_pack")),
),
tg.NewReplyKeyboardRow(
tg.NewReplyKeyboardButton(T("button_del_sticker")),
tg.NewReplyKeyboardButton(T("button_del_pack")),
),
tg.NewReplyKeyboardRow(
tg.NewReplyKeyboardButton(T("button_reset")),
),
)
}
func getCancelButton(T i18n.TranslateFunc) *tg.ReplyKeyboardMarkup {
return tg.NewReplyKeyboardMarkup(
tg.NewReplyKeyboardRow(
tg.NewReplyKeyboardButton(T("button_cancel")),
),
)
}

View File

@ -1,5 +1,15 @@
button_add_pack:
other: "\U0001F4E6 Add pack"
button_add_sticker:
other: Add sticker
button_cancel:
other: ❌ Cancel
button_del:
other: Select sticker for remove
button_del_pack:
other: "\U0001F5D1 Delete pack"
button_del_sticker:
other: "\U0001F5D1 Delete sticker"
button_inline_add:
one: You have {{.Count}} sticker. Add one more?
other: You have {{.Count}} stickers. Add one more?
@ -7,6 +17,8 @@ button_inline_empty:
other: Your pack is empty
button_inline_nothing:
other: Not found stickers for {{.Query}}, add one?
button_reset:
other: "\U0001F525 Reset pack"
button_share:
other: Use your stickers pack!
cancel_add_pack:
@ -39,7 +51,7 @@ error_reset_phrase:
error_unknown:
other: |-
I do not know what to do with this sticker.
Please run /{{.AddStickerCommand}}, /{{.AddPackCommand}} or /{{.DeleteCommand}} command first.
Please run /{{.AddStickerCommand}}, /{{.AddPackCommand}}, /{{.DeleteStickerCommand}} or /{{.DeletePackCommand}} command first.
meta_key_phrase:
other: Yes, I am totally sure.
meta_reset_1:

View File

@ -8,4 +8,16 @@ button_inline_add:
button_del:
other: Select sticker for remove
button_share:
other: Use your stickers pack!
other: Use your stickers pack!
button_add_sticker:
other: Add sticker
button_add_pack:
other: 📦 Add pack
button_del_sticker:
other: 🗑 Delete sticker
button_del_pack:
other: 🗑 Delete pack
button_reset:
other: 🔥 Reset pack
button_cancel:
other: ❌ Cancel

View File

@ -1,5 +1,15 @@
button_add_pack:
other: "\U0001F4E6 Добавить набор"
button_add_sticker:
other: Добавить стикер
button_cancel:
other: ❌ Отменить
button_del:
other: Выбрать стикер для удаления
button_del_pack:
other: "\U0001F5D1 Удалить набор"
button_del_sticker:
other: "\U0001F5D1 Удалить стикер"
button_inline_add:
few: У тебя {{.Count}} стикеров. Добавить ещё один?
many: У тебя {{.Count}} стикеров. Добавить ещё один?
@ -9,6 +19,8 @@ button_inline_empty:
other: Твой набор пуст
button_inline_nothing:
other: Нет стикеров с {{.Query}}, добавить один?
button_reset:
other: "\U0001F525 Сбросить набор"
button_share:
other: Воспользоваться твоим набором!
cancel_add_pack:

View File

@ -10,4 +10,16 @@ button_inline_add:
button_del:
other: Выбрать стикер для удаления
button_share:
other: Воспользоваться твоим набором!
other: Воспользоваться твоим набором!
button_add_sticker:
other: Добавить стикер
button_add_pack:
other: 📦 Добавить набор
button_del_sticker:
other: 🗑 Удалить стикер
button_del_pack:
other: 🗑 Удалить набор
button_reset:
other: 🔥 Сбросить набор
button_cancel:
other: ❌ Отменить

View File

@ -1,8 +1,8 @@
package main
import (
log "github.com/kirillDanshin/dlog" // Insert logs only in debug builds
tg "github.com/toby3d/telegram" // My Telegram bindings
// log "github.com/kirillDanshin/dlog" // Insert logs only in debug builds
tg "github.com/toby3d/telegram" // My Telegram bindings
)
// message function check Message update on commands, sended stickers or other
@ -16,13 +16,65 @@ func messages(msg *tg.Message) {
state, err := dbGetUserState(msg.From.ID)
errCheck(err)
T, err := switchLocale(msg.From.LanguageCode)
errCheck(err)
switch msg.Text {
case T("button_add_sticker"):
commandAdd(msg, false)
return
case T("button_add_pack"):
commandAdd(msg, true)
return
case T("button_del_sticker"):
commandDelete(msg, false)
return
case T("button_del_pack"):
commandDelete(msg, true)
return
case T("button_reset"):
commandReset(msg)
return
case T("button_cancel"):
commandCancel(msg)
return
}
switch state {
case stateAddSticker:
if msg.Sticker == nil {
return
}
actionAdd(msg, false)
return
case stateAddPack:
if msg.Sticker == nil {
return
}
actionAdd(msg, true)
return
case stateDeleteSticker:
if msg.Sticker == nil {
return
}
actionDelete(msg, false)
return
case stateDeletePack:
if msg.Sticker == nil {
return
}
actionDelete(msg, true)
return
case stateReset:
actionReset(msg)
return
case stateNone:
bot.SendChatAction(msg.Chat.ID, tg.ActionTyping)
T, err := switchLocale(msg.From.LanguageCode)
errCheck(err)
reply := tg.NewMessage(
msg.Chat.ID,
T("error_unknown", map[string]interface{}{
@ -32,53 +84,11 @@ func messages(msg *tg.Message) {
"DeletePackCommand": cmdDeletePack,
}))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = getMenuKeyboard(T)
_, err = bot.SendMessage(reply)
errCheck(err)
return
case stateAddSticker:
if msg.Sticker == nil {
return
}
log.D(msg.Sticker)
log.D(msg.Sticker.Emoji)
actionAdd(msg, false)
return
case stateAddPack:
if msg.Sticker == nil {
return
}
log.D(msg.Sticker)
log.D(msg.Sticker.Emoji)
actionAdd(msg, true)
return
case stateDeleteSticker:
if msg.Sticker == nil {
return
}
log.D(msg.Sticker)
log.D(msg.Sticker.Emoji)
actionDelete(msg, false)
return
case stateDeletePack:
if msg.Sticker == nil {
return
}
log.D(msg.Sticker)
log.D(msg.Sticker.Emoji)
actionDelete(msg, true)
return
case stateReset:
actionReset(msg)
return
}
err = dbChangeUserState(msg.From.ID, stateNone)

View File

@ -22,6 +22,7 @@ func commandReset(msg *tg.Message) {
reply := tg.NewMessage(msg.Chat.ID, T("error_already_reset"))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = getMenuKeyboard(T)
_, err = bot.SendMessage(reply)
errCheck(err)
@ -38,6 +39,7 @@ func commandReset(msg *tg.Message) {
"CancelCommand": cmdCancel,
}))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = getCancelButton(T)
_, err = bot.SendMessage(reply)
errCheck(err)
@ -55,6 +57,7 @@ func actionReset(msg *tg.Message) {
if msg.Text != T("meta_key_phrase") {
reply := tg.NewMessage(msg.Chat.ID, T("error_reset_phrase"))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = getMenuKeyboard(T)
_, err = bot.SendMessage(reply)
errCheck(err)
@ -66,6 +69,7 @@ func actionReset(msg *tg.Message) {
reply := tg.NewMessage(msg.Chat.ID, T("success_reset"))
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = tg.NewReplyKeyboardRemove(false)
_, err = bot.SendMessage(reply)
errCheck(err)

View File

@ -31,6 +31,7 @@ func commandStart(msg *tg.Message) {
}),
)
reply.ParseMode = tg.ModeMarkdown
reply.ReplyMarkup = getMenuKeyboard(T)
_, err = bot.SendMessage(reply)
errCheck(err)