bot-me / src /bots /handlers /commandHandlers.ts
Mohammed Foud
all
507418c
import { getWelcomeMessage , getHelpMessage, getAboutMessage, getContactMessage} from "../utils/messageUtils";
import { getMainMenuKeyboard, getLoggedInMenuKeyboard, getHistoryKeyboard } from "../utils/keyboardUtils";
import { BotContext } from "../types/botTypes";
import { AuthService } from '../services/auth';
import { PurchaseTrackingService, PurchaseState } from '../services/PurchaseTrackingService';
import { createLogger } from '../../utils/logger';
import { messageReplyHandler } from "../utils/handlerUtils";
import { handleLanguageSelection } from "./languageHandlers";
import { messageManager } from "../utils/messageManager";
// import { logger } from "../../utils/logger";
const logger = createLogger('CommandHandlers');
const authService = AuthService.getInstance();
const purchaseTrackingService = PurchaseTrackingService.getInstance();
export const setupCommandHandlers = (bot: any) => {
// /start command handler
bot.start(messageReplyHandler(handleStartCommand));
// Other commands using the new messageReplyHandler
bot.command('help', messageReplyHandler(handleHelpCommand));
bot.command('about', messageReplyHandler(handleAboutCommand));
bot.command('contact', messageReplyHandler(handleContactCommand));
bot.command('balance', messageReplyHandler(handleBalanceCommand));
bot.command('history', messageReplyHandler(handleHistoryCommand));
// Add language command handler
bot.command('change_language', messageReplyHandler(handleLanguageCommand));
};
const handleStartCommand = (ctx: BotContext) => {
const name = ctx.from?.first_name || "عزيزي المستخدم";
const telegramId = ctx.from?.id;
if (telegramId && authService.isUserLoggedIn(telegramId,ctx)) {
return {
message: messageManager.getMessage('start_welcome_back').replace('{name}', name),
options: getLoggedInMenuKeyboard()
};
} else {
return {
message: messageManager.getMessage('start_welcome_new').replace('{name}', name),
options: getMainMenuKeyboard()
};
}
};
const handleAboutCommand = (ctx: BotContext) => {
const botData = ctx.botData;
return {
message: [
messageManager.getMessage('about_title'),
messageManager.getMessage('about_bot_name').replace('{bot_name}', botData?.name || 'بوت الأرقام الافتراضية'),
messageManager.getMessage('about_version').replace('{version}', botData?.version || '1.0.0'),
messageManager.getMessage('about_currency').replace('{currency}', botData?.currency || 'USD'),
'',
messageManager.getMessage('about_features'),
'',
messageManager.getMessage('about_copyright')
].join('\n'),
options: { parse_mode: 'HTML' }
};
};
const handleHelpCommand = (ctx: BotContext) => {
return {
message: getHelpMessage(),
options: { parse_mode: 'HTML' }
};
};
const handleContactCommand = (ctx: BotContext) => {
return {
message: getContactMessage(),
options: { parse_mode: 'HTML' }
};
};
const handleBalanceCommand = async (ctx: BotContext) => {
const telegramId = ctx.from?.id;
if (!telegramId) {
return {
message: messageManager.getMessage('error_user_not_found'),
options: {}
};
}
const user = await authService.getUserByTelegramId(telegramId,ctx);
if (!user) {
return {
message: messageManager.getMessage('balance_auth_required'),
options: getMainMenuKeyboard()
};
}
return {
message: [
messageManager.getMessage('balance_title'),
'',
messageManager.getMessage('balance_current').replace('{balance}', (user.balance || 0).toString()),
messageManager.getMessage('balance_last_updated').replace('{update_time}', new Date().toLocaleString('ar-SA'))
].join('\n'),
options: {
...getLoggedInMenuKeyboard(),
parse_mode: 'HTML'
}
};
};
const handleHistoryCommand = async (ctx: BotContext) => {
const telegramId = ctx.from?.id;
if (!telegramId) {
return {
message: messageManager.getMessage('error_user_not_found'),
options: {}
};
}
if (!authService.isUserLoggedIn(telegramId,ctx)) {
return {
message: messageManager.getMessage('history_auth_required'),
options: getMainMenuKeyboard()
};
}
return {
message: [
messageManager.getMessage('history_title'),
'',
messageManager.getMessage('history_description')
].join('\n'),
options: {
...getHistoryKeyboard(),
parse_mode: 'HTML'
}
};
};
const handleLanguageCommand = (ctx: BotContext) => {
return handleLanguageSelection(ctx);
};