webook-tel / src /bots /utils /messageUtils.ts
Mohammed Foud
all
959b027
import { BotContext } from "../types/botTypes";
import { formatPrice } from "./priceUtils";
import { messageManager } from "./messageManager";
export const getWelcomeMessage = (name: string = "عزيزي المستخدم") => {
return messageManager.getMessage('welcome').replace('{name}', name);
};
export const getLoginMessage = () => {
return messageManager.getMessage('login');
};
export const getTermsMessage = () => {
return messageManager.getMessage('terms');
};
export const getNewMembersMessage = () => {
return messageManager.getMessage('new_members');
};
export const getStatsMessage = () => {
return messageManager.getMessage('stats')
.replace('{current_datetime}', new Date().toLocaleString('ar-SA'));
};
export const getHelpMessage = () => {
return messageManager.getMessage('help');
};
export const getAboutMessage = () => {
return messageManager.getMessage('about');
};
export const getContactMessage = () => {
return messageManager.getMessage('contact');
};
export const getAuthRequiredMessage = () => {
return messageManager.getMessage('auth_required');
};
// export const getCountriesListMessage = (service: string, page: number = 0) => {
// return messageManager.getMessage('countries_list')
// .replace('{service}', service)
// .replace('{page > 0 ? `📑 الصفحة: {page + 1}\n` : \'\'}',
// page > 0 ? `📑 الصفحة: ${page + 1}\n` : '');
// };
export const getCountriesListMessage = (service: string, page: number = 0) => {
return `
🌍 *الدول المتاحة لخدمة ${service}*
${page > 0 ? `📑 الصفحة: ${page + 1}\n` : ''}✨ اختر الدولة التي تريدها من القائمة التالية:
`;
};
export const getServiceErrorMessage = (service: string) => {
return messageManager.getMessage('service_error')
.replace('{service}', service);
};
export const getLoadingPricesMessage = (service: string, countryId: string) => {
return messageManager.getMessage('loading_prices')
.replace('{service}', service)
.replace('{countryId}', countryId);
};
export const getNoPricesMessage = (service: string, countryId: string) => {
return messageManager.getMessage('no_prices')
.replace('{service}', service)
.replace('{countryId}', countryId);
};
export const getPricesListMessage = (
service: string,
countryId: string,
prices: any,
ctx: BotContext
) => {
const countryName = countryId; // Consider using a real mapping function like getCountryName(countryId)
let message = messageManager.getMessage('prices_list')
.replace('{service}', service)
.replace('{countryName}', countryName);
// If you want to include prices in the future:
// Object.entries(prices).forEach(([operator, priceInfo]: [string, any]) => {
// const formattedPrice = formatPrice(ctx, priceInfo.cost);
// const availability = priceInfo.count > 0 ? ` (${priceInfo.count} متاح)` : ' (غير متوفر)';
// message += `${operator}: ${formattedPrice}${availability}\n`;
// });
return message;
};
export const getPricesErrorMessage = (service: string, countryId: string) => {
return messageManager.getMessage('prices_error')
.replace('{service}', service)
.replace('{countryId}', countryId);
};
export const getProcessingPurchaseMessage = (service: string, countryId: string) => {
return messageManager.getMessage('processing_purchase')
.replace('{service}', service)
.replace('{countryId}', countryId);
};
export const getServiceUnavailableMessage = (
service: string,
operator: string,
countryId: string
) => {
return messageManager.getMessage('service_unavailable')
.replace('{service}', service)
.replace('{operator}', operator)
.replace('{countryId}', countryId);
};
export const getInsufficientBalanceMessage = (cost: number, balance: number) => {
return messageManager.getMessage('insufficient_balance')
.replace('{cost}', cost.toString())
.replace('{balance}', balance.toString());
};
export const getPurchaseSuccessMessage = (
purchaseResult: any,
service: string,
countryId: string,
operator: string,
cost: number
) => {
return messageManager.getMessage('purchase_success')
.replace('{phone}', purchaseResult.phone)
.replace('{countryId}', countryId)
.replace('{operator}', operator)
.replace('{cost}', cost.toString())
.replace('{expires}', purchaseResult.expires.toString());
};
export const getPurchaseFailedMessage = () => {
return messageManager.getMessage('purchase_failed');
};
export const getPurchaseErrorMessage = (errorMessage: string) => {
return messageManager.getMessage('purchase_error')
.replace('{error_message}', errorMessage || 'سبب غير معروف');
};
export const getPaginationErrorMessage = () => {
return messageManager.getMessage('pagination_error');
};
export const getVerificationCodeMessage = (phone: string, code: string) => {
return messageManager.getMessage('verification_code')
.replace('{phone}', phone)
.replace('{code}', code)
.replace('{current_time}', new Date().toLocaleTimeString('ar-SA'));
};
export const getVerificationTimeoutMessage = () => {
return messageManager.getMessage('verification_timeout');
};
export const getSearchProductPromptMessage = () => {
return messageManager.getMessage('search_product_prompt');
};
export const getNoSearchResultsMessage = () => {
return messageManager.getMessage('no_search_results');
};
export const getInvalidSearchInputMessage = () => {
return messageManager.getMessage('invalid_search_input');
};
export const getSearchCountryPromptMessage = () => {
return messageManager.getMessage('search_country_prompt');
};
export const getNoCountrySearchResultsMessage = () => {
return messageManager.getMessage('no_country_search_results');
};
export const getAffordableProductsMessage = (balance: number, ctx: BotContext) => {
return messageManager.getMessage('affordable_products_list')
.replace('{balance}', formatPrice(ctx, balance));
};
export const getNoAffordableProductsMessage = (balance: number, ctx: BotContext) => {
return messageManager.getMessage('no_affordable_products')
.replace('{balance}', formatPrice(ctx, balance));
};
export const getJoinGroupRequiredMessage = (group: string) => {
return {
ar: `⚠️ يجب عليك الانضمام إلى المجموعة أولاً لاستخدام البوت\n\n📢 انضم إلى المجموعة: @${group}`,
en: `⚠️ You must join the group first to use the bot\n\n📢 Join the group: @${group}`
};
};