File size: 6,591 Bytes
80d4bc1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c46400f
 
 
 
 
 
 
 
 
 
 
 
a90edf4
 
 
 
 
 
 
 
65d6a69
 
 
 
 
 
 
 
 
 
52048a9
 
 
 
 
 
 
80d4bc1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
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}`
  };
};