Fix: Message threading - navigation now sends new messages at bottom
- Changed HandleMainMenu to send new messages instead of editing - Changed HandleBrowse to send new messages for category navigation - Changed HandleViewCart to use SendNewCartMessage (already existed) - Changed HandleViewOrders to send new messages for order list - Changed HandleViewOrder to send new messages for order details This ensures the active conversation always appears at the bottom of the chat instead of mid-thread when users click menu buttons. Provides better UX and natural conversation flow in Telegram.
This commit is contained in:
parent
c8f22c783d
commit
6c79c04ebd
@ -253,9 +253,9 @@ namespace TeleBot.Handlers
|
|||||||
|
|
||||||
private async Task HandleMainMenu(ITelegramBotClient bot, Message message, UserSession session)
|
private async Task HandleMainMenu(ITelegramBotClient bot, Message message, UserSession session)
|
||||||
{
|
{
|
||||||
await bot.EditMessageTextAsync(
|
// Send new message at bottom instead of editing old one
|
||||||
|
await bot.SendTextMessageAsync(
|
||||||
message.Chat.Id,
|
message.Chat.Id,
|
||||||
message.MessageId,
|
|
||||||
MessageFormatter.FormatWelcome(true),
|
MessageFormatter.FormatWelcome(true),
|
||||||
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
||||||
replyMarkup: MenuBuilder.MainMenu()
|
replyMarkup: MenuBuilder.MainMenu()
|
||||||
@ -274,13 +274,12 @@ namespace TeleBot.Handlers
|
|||||||
|
|
||||||
var categories = await _shopService.GetCategoriesAsync();
|
var categories = await _shopService.GetCategoriesAsync();
|
||||||
|
|
||||||
await SafeEditMessageAsync(
|
// Send new message at bottom for navigation
|
||||||
bot,
|
await bot.SendTextMessageAsync(
|
||||||
message.Chat.Id,
|
message.Chat.Id,
|
||||||
message.MessageId,
|
|
||||||
MessageFormatter.FormatCategories(categories),
|
MessageFormatter.FormatCategories(categories),
|
||||||
Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
||||||
MenuBuilder.CategoryMenu(categories)
|
replyMarkup: MenuBuilder.CategoryMenu(categories)
|
||||||
);
|
);
|
||||||
session.State = SessionState.BrowsingCategories;
|
session.State = SessionState.BrowsingCategories;
|
||||||
}
|
}
|
||||||
@ -516,14 +515,8 @@ namespace TeleBot.Handlers
|
|||||||
session.Cart.GetTotalAmount()
|
session.Cart.GetTotalAmount()
|
||||||
);
|
);
|
||||||
|
|
||||||
await bot.EditMessageTextAsync(
|
// Send new message at bottom instead of editing
|
||||||
message.Chat.Id,
|
await SendNewCartMessage(bot, message.Chat.Id, session);
|
||||||
message.MessageId,
|
|
||||||
MessageFormatter.FormatCart(session.Cart),
|
|
||||||
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
|
||||||
replyMarkup: _menuBuilder.CartMenu(session.Cart)
|
|
||||||
);
|
|
||||||
session.State = SessionState.ViewingCart;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task SendNewCartMessage(ITelegramBotClient bot, long chatId, UserSession session)
|
private async Task SendNewCartMessage(ITelegramBotClient bot, long chatId, UserSession session)
|
||||||
@ -1130,11 +1123,11 @@ namespace TeleBot.Handlers
|
|||||||
telegramUser.LastName ?? ""
|
telegramUser.LastName ?? ""
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Send new message at bottom for navigation
|
||||||
if (!orders.Any())
|
if (!orders.Any())
|
||||||
{
|
{
|
||||||
await bot.EditMessageTextAsync(
|
await bot.SendTextMessageAsync(
|
||||||
message.Chat.Id,
|
message.Chat.Id,
|
||||||
message.MessageId,
|
|
||||||
"📦 *Your Orders*\n\nYou have no orders yet.",
|
"📦 *Your Orders*\n\nYou have no orders yet.",
|
||||||
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
||||||
replyMarkup: MenuBuilder.MainMenu()
|
replyMarkup: MenuBuilder.MainMenu()
|
||||||
@ -1142,9 +1135,8 @@ namespace TeleBot.Handlers
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await bot.EditMessageTextAsync(
|
await bot.SendTextMessageAsync(
|
||||||
message.Chat.Id,
|
message.Chat.Id,
|
||||||
message.MessageId,
|
|
||||||
$"📦 *Your Orders*\n\nFound {orders.Count} order(s):",
|
$"📦 *Your Orders*\n\nFound {orders.Count} order(s):",
|
||||||
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
||||||
replyMarkup: MenuBuilder.OrderListMenu(orders)
|
replyMarkup: MenuBuilder.OrderListMenu(orders)
|
||||||
@ -1171,9 +1163,9 @@ namespace TeleBot.Handlers
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await bot.EditMessageTextAsync(
|
// Send new message at bottom for navigation
|
||||||
|
await bot.SendTextMessageAsync(
|
||||||
message.Chat.Id,
|
message.Chat.Id,
|
||||||
message.MessageId,
|
|
||||||
MessageFormatter.FormatOrder(order),
|
MessageFormatter.FormatOrder(order),
|
||||||
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown,
|
||||||
replyMarkup: MenuBuilder.MainMenu()
|
replyMarkup: MenuBuilder.MainMenu()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user