|
|
@@ -47,7 +47,7 @@ func (t *Tgbot) OnReceive() {
|
|
|
tgBotMutex.Unlock()
|
|
|
|
|
|
h.HandleMessage(func(ctx *th.Context, message telego.Message) error {
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.keyboardClosed"), tu.ReplyKeyboardRemove())
|
|
|
return nil
|
|
|
}, th.TextEqual(t.I18nBot("tgbot.buttons.closeKeyboard")))
|
|
|
@@ -62,7 +62,7 @@ func (t *Tgbot) OnReceive() {
|
|
|
messageWorkerPool <- struct{}{} // Acquire worker
|
|
|
defer func() { <-messageWorkerPool }() // Release worker
|
|
|
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
t.answerCommand(&message, message.Chat.ID, checkAdmin(message.From.ID))
|
|
|
}()
|
|
|
return nil
|
|
|
@@ -74,25 +74,26 @@ func (t *Tgbot) OnReceive() {
|
|
|
messageWorkerPool <- struct{}{} // Acquire worker
|
|
|
defer func() { <-messageWorkerPool }() // Release worker
|
|
|
|
|
|
- delete(userStates, query.Message.GetChat().ID)
|
|
|
+ userStateMgr.clear(query.Message.GetChat().ID)
|
|
|
t.answerCallback(&query, checkAdmin(query.From.ID))
|
|
|
}()
|
|
|
return nil
|
|
|
}, th.AnyCallbackQueryWithMessage())
|
|
|
|
|
|
h.HandleMessage(func(ctx *th.Context, message telego.Message) error {
|
|
|
- if userState, exists := userStates[message.Chat.ID]; exists {
|
|
|
+ userStateMgr.maybePrune(time.Hour)
|
|
|
+ if userState, exists := userStateMgr.get(message.Chat.ID); exists {
|
|
|
switch userState {
|
|
|
case "awaiting_email":
|
|
|
if client_Email == strings.TrimSpace(message.Text) {
|
|
|
t.SendMsgToTgbotDeleteAfter(message.Chat.ID, t.I18nBot("tgbot.messages.using_default_value"), 3, tu.ReplyKeyboardRemove())
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
client_Email = strings.TrimSpace(message.Text)
|
|
|
if t.isSingleWord(client_Email) {
|
|
|
- userStates[message.Chat.ID] = "awaiting_email"
|
|
|
+ userStateMgr.set(message.Chat.ID, "awaiting_email")
|
|
|
|
|
|
cancel_btn_markup := tu.InlineKeyboard(
|
|
|
tu.InlineKeyboardRow(
|
|
|
@@ -103,26 +104,26 @@ func (t *Tgbot) OnReceive() {
|
|
|
t.SendMsgToTgbot(message.Chat.ID, t.I18nBot("tgbot.messages.incorrect_input"), cancel_btn_markup)
|
|
|
} else {
|
|
|
t.SendMsgToTgbotDeleteAfter(message.Chat.ID, t.I18nBot("tgbot.messages.received_email"), 3, tu.ReplyKeyboardRemove())
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
t.addClient(message.Chat.ID, t.BuildClientDraftMessage())
|
|
|
}
|
|
|
case "awaiting_comment":
|
|
|
if client_Comment == strings.TrimSpace(message.Text) {
|
|
|
t.SendMsgToTgbotDeleteAfter(message.Chat.ID, t.I18nBot("tgbot.messages.using_default_value"), 3, tu.ReplyKeyboardRemove())
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
client_Comment = strings.TrimSpace(message.Text)
|
|
|
t.SendMsgToTgbotDeleteAfter(message.Chat.ID, t.I18nBot("tgbot.messages.received_comment"), 3, tu.ReplyKeyboardRemove())
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
t.addClient(message.Chat.ID, t.BuildClientDraftMessage())
|
|
|
case "awaiting_tg_id":
|
|
|
input := strings.TrimSpace(message.Text)
|
|
|
if input == "" || input == "-" || strings.EqualFold(input, "none") {
|
|
|
client_TgID = ""
|
|
|
t.SendMsgToTgbotDeleteAfter(message.Chat.ID, t.I18nBot("tgbot.messages.using_default_value"), 3, tu.ReplyKeyboardRemove())
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
t.addClient(message.Chat.ID, t.BuildClientDraftMessage())
|
|
|
return nil
|
|
|
}
|
|
|
@@ -137,7 +138,7 @@ func (t *Tgbot) OnReceive() {
|
|
|
}
|
|
|
client_TgID = input
|
|
|
t.SendMsgToTgbotDeleteAfter(message.Chat.ID, t.I18nBot("tgbot.messages.userSaved"), 3, tu.ReplyKeyboardRemove())
|
|
|
- delete(userStates, message.Chat.ID)
|
|
|
+ userStateMgr.clear(message.Chat.ID)
|
|
|
t.addClient(message.Chat.ID, t.BuildClientDraftMessage())
|
|
|
}
|
|
|
|
|
|
@@ -1236,7 +1237,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
|
|
|
t.SendMsgToTgbot(chatId, t.I18nBot("tgbot.answers.chooseInbound"), inbounds)
|
|
|
case "add_client_ch_default_email":
|
|
|
t.deleteMessageTgBot(chatId, callbackQuery.Message.GetMessageID())
|
|
|
- userStates[chatId] = "awaiting_email"
|
|
|
+ userStateMgr.set(chatId, "awaiting_email")
|
|
|
cancel_btn_markup := tu.InlineKeyboard(
|
|
|
tu.InlineKeyboardRow(
|
|
|
tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("add_client_default_info"),
|
|
|
@@ -1246,7 +1247,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
|
|
|
t.SendMsgToTgbot(chatId, prompt_message, cancel_btn_markup)
|
|
|
case "add_client_ch_default_comment":
|
|
|
t.deleteMessageTgBot(chatId, callbackQuery.Message.GetMessageID())
|
|
|
- userStates[chatId] = "awaiting_comment"
|
|
|
+ userStateMgr.set(chatId, "awaiting_comment")
|
|
|
cancel_btn_markup := tu.InlineKeyboard(
|
|
|
tu.InlineKeyboardRow(
|
|
|
tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("add_client_default_info"),
|
|
|
@@ -1256,7 +1257,7 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
|
|
|
t.SendMsgToTgbot(chatId, prompt_message, cancel_btn_markup)
|
|
|
case "add_client_ch_default_tg_id":
|
|
|
t.deleteMessageTgBot(chatId, callbackQuery.Message.GetMessageID())
|
|
|
- userStates[chatId] = "awaiting_tg_id"
|
|
|
+ userStateMgr.set(chatId, "awaiting_tg_id")
|
|
|
cancel_btn_markup := tu.InlineKeyboard(
|
|
|
tu.InlineKeyboardRow(
|
|
|
tu.InlineKeyboardButton(t.I18nBot("tgbot.buttons.use_default")).WithCallbackData("add_client_default_info"),
|
|
|
@@ -1357,10 +1358,10 @@ func (t *Tgbot) answerCallback(callbackQuery *telego.CallbackQuery, isAdmin bool
|
|
|
case "add_client_default_info":
|
|
|
t.deleteMessageTgBot(chatId, callbackQuery.Message.GetMessageID())
|
|
|
t.SendMsgToTgbotDeleteAfter(chatId, t.I18nBot("tgbot.messages.using_default_value"), 3, tu.ReplyKeyboardRemove())
|
|
|
- delete(userStates, chatId)
|
|
|
+ userStateMgr.clear(chatId)
|
|
|
t.addClient(chatId, t.BuildClientDraftMessage())
|
|
|
case "add_client_cancel":
|
|
|
- delete(userStates, chatId)
|
|
|
+ userStateMgr.clear(chatId)
|
|
|
receiver_inbound_ID = 0
|
|
|
receiver_inbound_IDs = nil
|
|
|
t.deleteMessageTgBot(chatId, callbackQuery.Message.GetMessageID())
|