Coverage for /home/runner/work/gpu-prices-bot/gpu-prices-bot/src/bot/bot.py: 0%
15 statements
« prev ^ index » next coverage.py v7.2.1, created at 2023-03-31 20:32 +0000
« prev ^ index » next coverage.py v7.2.1, created at 2023-03-31 20:32 +0000
1from telegram.ext import (
2 Updater,
3 CommandHandler,
4 CallbackQueryHandler,
5 ConversationHandler,
6 MessageHandler, Filters,
7)
9from src.bot.autorization import token
10from src.bot.commands import *
11from src.bot.constants import *
14def main() -> None:
15 """Start the bot."""
16 # Создание Updater и связывание с токеном бота
17 updater = Updater(token)
19 # Получение dispatcher и регистрация handlers
20 dispatcher = updater.dispatcher
22 for_gpu_handler = ConversationHandler(
23 entry_points=[CallbackQueryHandler(for_gpu, pattern='^' + str(FOR_GPU) + '$'),],
24 states={
25 ON_SEARCH: [
26 CallbackQueryHandler(gpu_info, pattern=Filters.text),
27 ],
28 GRAPH_SUBMENU_ON_GPU: [
29 CallbackQueryHandler(graph_for_gpu_func, pattern='^' + str(SHOW_30_DAYS_GPU) + '$'),
30 CallbackQueryHandler(graph_for_gpu_func, pattern='^' + str(SHOW_60_DAYS_GPU) + '$'),
31 CallbackQueryHandler(graph_for_gpu_func, pattern='^' + str(SHOW_90_DAYS_GPU) + '$'),
32 ],
33 ON_GPU_QUESTION: [
34 ],
35 GPU_SUBMENU: [
36 MessageHandler(Filters.text, gpu_search_func),
37 ],
38 },
39 fallbacks=[
40 CallbackQueryHandler(end_on_gpu, pattern='^' + str(BACK_TO_MENU) + '$'),
41 CommandHandler('start', start_fallback),
42 ],
43 map_to_parent={
44 BACK_TO_MENU: MENU
45 },
46 )
48 # Добавление conversation handler с состояниями разговора
49 conv_handler = ConversationHandler(
50 entry_points=[CommandHandler('start', start)],
51 states={
52 MENU: [
53 CallbackQueryHandler(stats_popularity_func, pattern='^' + str(STATS) + '$'),
54 CallbackQueryHandler(stats_popularity_func, pattern='^' + str(POPULARITY) + '$'),
55 ],
56 STATS_SUBMENU: [
57 CallbackQueryHandler(for_shop_vendor_stats, pattern='^' + str(FOR_SHOP) + '$'),
58 CallbackQueryHandler(for_shop_vendor_stats, pattern='^' + str(FOR_VENDOR) + '$'),
59 for_gpu_handler,
60 ],
61 POPULARITY_SUBMENU: [
62 CallbackQueryHandler(for_shop_vendor_popularity, pattern='^'+ str(POPULARITY_FOR_SHOP) + '$'),
63 CallbackQueryHandler(for_shop_vendor_popularity, pattern='^' + str(POPULARITY_FOR_VENDOR) + '$'),
64 ],
65 POPULARITY_SHOPS_SUBMENU: [
66 CallbackQueryHandler(popularity_shops_graph, pattern='^' + str(DNS_SHOP) + '$'),
67 CallbackQueryHandler(popularity_shops_graph, pattern='^' + str(MVIDEO_SHOP) + '$'),
68 CallbackQueryHandler(popularity_shops_graph, pattern='^' + str(CITILINK_SHOP) + '$'),
69 ],
70 POPULARITY_SHOPS_GRAPH_SUBMENU: [
71 CallbackQueryHandler(start_over, pattern='^' + str(BACK_TO_MENU) + '$')
72 ],
73 POPULARITY_VENDORS_SUBMENU: [
74 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_AFOX) + '$'),
75 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_ASROCK) + '$'),
76 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_ASUS) + '$'),
77 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_BIOSTAR) + '$'),
78 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_COLORFUL) + '$'),
79 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_DELL) + '$'),
80 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_EVGA) + '$'),
81 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_GIGABYTE) + '$'),
82 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_INNO3D) + '$'),
83 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_KFA2) + '$'),
84 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_MATROX) + '$'),
85 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_MSI) + '$'),
86 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_NVIDIA) + '$'),
87 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_PALIT) + '$'),
88 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_PNY) + '$'),
89 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_POWERCOLOR) + '$'),
90 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_SAPPHIRE) + '$'),
91 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_SINOTEX) + '$'),
92 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_XFX) + '$'),
93 CallbackQueryHandler(popularity_vendors_graph, pattern='^' + str(VENDOR_ZOTAC) + '$'),
94 ],
95 POPULARITY_VENDORS_GRAPH_SUBMENU: [
96 CallbackQueryHandler(start_over, pattern='^' + str(BACK_TO_MENU) + '$')
97 ],
98 SHOPS_SUBMENU: [
99 CallbackQueryHandler(arch_func, pattern='^' + str(DNS_SHOP) + '$'),
100 CallbackQueryHandler(arch_func, pattern='^' + str(MVIDEO_SHOP) + '$'),
101 CallbackQueryHandler(arch_func, pattern='^' + str(CITILINK_SHOP) + '$'),
102 ],
103 VENDORS_SUBMENU: [
104 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_AFOX) + '$'),
105 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_ASROCK) + '$'),
106 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_ASUS) + '$'),
107 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_BIOSTAR) + '$'),
108 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_COLORFUL) + '$'),
109 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_DELL) + '$'),
110 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_EVGA) + '$'),
111 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_GIGABYTE) + '$'),
112 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_INNO3D) + '$'),
113 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_KFA2) + '$'),
114 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_MATROX) + '$'),
115 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_MSI) + '$'),
116 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_NVIDIA) + '$'),
117 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_PALIT) + '$'),
118 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_PNY) + '$'),
119 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_POWERCOLOR) + '$'),
120 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_SAPPHIRE) + '$'),
121 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_SINOTEX) + '$'),
122 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_XFX) + '$'),
123 CallbackQueryHandler(arch_func, pattern='^' + str(VENDOR_ZOTAC) + '$'),
124 ],
125 ARCHITECTURE_SUBMENU: [
126 CallbackQueryHandler(nvidia_amd_other_func, pattern='^' + str(NVIDIA) + '$'),
127 CallbackQueryHandler(nvidia_amd_other_func, pattern='^' + str(AMD) + '$'),
128 CallbackQueryHandler(nvidia_amd_other_func, pattern='^' + str(OTHER_ARCH) + '$'),
129 ],
130 OTHER_ARCH_SUBMENU: [
131 CallbackQueryHandler(nvidia_amd_other_func, pattern='^' + str(INTEL) + '$'),
132 CallbackQueryHandler(nvidia_amd_other_func, pattern='^' + str(MATROX) + '$'),
133 ],
134 NVIDIA_SERIES_SUBMENU: [
135 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_10XX_SERIES) + '$'),
136 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_16XX_SERIES) + '$'),
137 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_20XX_SERIES) + '$'),
138 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_30XX_SERIES) + '$'),
139 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_40XX_SERIES) + '$'),
140 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_OTHER_SERIES) + '$'),
141 ],
142 NVIDIA_OTHER_SUBMENU: [
143 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_QUADRO_SERIES) + '$'),
144 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_TESLA_SERIES) + '$'),
145 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_GT_710_SERIES) + '$'),
146 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_GT_730_SERIES) + '$'),
147 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_210_SERIES) + '$'),
148 ],
149 NVIDIA_QUADRO_SERIES_SUBMENU: [
150 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_QUADRO_P2000_SERIES) + '$'),
151 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_QUADRO_T400_SERIES) + '$'),
152 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_QUADRO_RTX_6000_SERIES) + '$'),
153 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_QUADRO_RTX_AXXXX_SERIES) + '$'),
154 ],
155 NVIDIA_QUADRO_RTX_AXXXX_SERIES_SUBMENU: [
156 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_QUADRO_RTX_A2000_SERIES) + '$'),
157 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_QUADRO_RTX_A4500_SERIES) + '$'),
158 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_QUADRO_RTX_A5000_SERIES) + '$'),
159 ],
160 NVIDIA_TESLA_SERIES_SUBMENU: [
161 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_TESLA_A10_SERIES) + '$'),
162 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_TESLA_A2_SERIES) + '$'),
163 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_TESLA_T4_SERIES) + '$'),
164 ],
165 NVIDIA_10XX_SERIES_SUBMENU: [
166 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1080_TI_SERIES) + '$'),
167 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1050_TI_SERIES) + '$'),
168 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1030_SERIES) + '$'),
169 ],
170 NVIDIA_16XX_SERIES_SUBMENU: [
171 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_1660X_SERIES) + '$'),
172 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_1650X_SERIES) + '$'),
173 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1630_SERIES) + '$'),
174 ],
175 NVIDIA_1650X_SERIES_SUBMENU: [
176 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1650_SERIES) + '$'),
177 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1650_SUPER_SERIES) + '$'),
178 ],
179 NVIDIA_1660X_SERIES_SUBMENU: [
180 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1660_SERIES) + '$'),
181 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1660_TI_SERIES) + '$'),
182 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_1660_SUPER_SERIES) + '$'),
183 ],
184 NVIDIA_20XX_SERIES_SUBMENU: [
185 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_2060X_SERIES) + '$'),
186 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_2080X_SERIES) + '$'),
187 ],
188 NVIDIA_2060X_SERIES_SUBMENU: [
189 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_2060_SERIES) + '$'),
190 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_2060_SUPER_SERIES) + '$'),
191 ],
192 NVIDIA_2080X_SERIES_SUBMENU: [
193 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_2080_TI_SERIES) + '$'),
194 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_2080_SUPER_SERIES) + '$'),
195 ],
196 NVIDIA_30XX_SERIES_SUBMENU: [
197 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3050_SERIES) + '$'),
198 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_3060X_SERIES) + '$'),
199 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_3070X_SERIES) + '$'),
200 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_3080X_SERIES) + '$'),
201 CallbackQueryHandler(nvidia_series_func, pattern='^' + str(NVIDIA_3090X_SERIES) + '$'),
202 ],
203 NVIDIA_3060X_SERIES_SUBMENU: [
204 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3060_SERIES) + '$'),
205 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3060_TI_SERIES) + '$'),
206 ],
207 NVIDIA_3070X_SERIES_SUBMENU: [
208 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3070_SERIES) + '$'),
209 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3070_TI_SERIES) + '$'),
210 ],
211 NVIDIA_3080X_SERIES_SUBMENU: [
212 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3080_SERIES) + '$'),
213 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3080_TI_SERIES) + '$'),
214 ],
215 NVIDIA_3090X_SERIES_SUBMENU: [
216 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3090_SERIES) + '$'),
217 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_3090_TI_SERIES) + '$'),
218 ],
219 NVIDIA_40XX_SERIES_SUBMENU: [
220 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_4080_SERIES) + '$'),
221 CallbackQueryHandler(graph_func, pattern='^' + str(NVIDIA_4090_SERIES) + '$'),
222 ],
223 AMD_SERIES_SUBMENU: [
224 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_RX5XX_SERIES) + '$'),
225 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_RX5XXX_SERIES) + '$'),
226 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_RX6XXX_SERIES) + '$'),
227 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_OTHER_SERIES) + '$'),
228 ],
229 AMD_OTHER_SUBMENU: [
230 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_R7_240_SERIES) + '$'),
231 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_R9_370_SERIES) + '$'),
232 ],
233 AMD_RX_5XX_SERIES_SUBMENU: [
234 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_550_SERIES) + '$'),
235 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_560_SERIES) + '$'),
236 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_580_SERIES) + '$'),
237 ],
238 AMD_RX_5XXX_SERIES_SUBMENU: [
239 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_5700_XT_SERIES) + '$')
240 ],
241 AMD_RX_6XXX_SERIES_SUBMENU: [
242 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6400_SERIES) + '$'),
243 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6500_XT_SERIES) + '$'),
244 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_RX_66XX_SERIES) + '$'),
245 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_RX_67XX_SERIES) + '$'),
246 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_RX_68XX_SERIES) + '$'),
247 CallbackQueryHandler(amd_series_func, pattern='^' + str(AMD_RX_69XX_SERIES) + '$'),
248 ],
249 AMD_RX_66XX_SERIES_SUBMENU: [
250 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6600_SERIES) + '$'),
251 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6600_XT_SERIES) + '$'),
252 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6650_XT_SERIES) + '$'),
253 ],
254 AMD_RX_67XX_SERIES_SUBMENU: [
255 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6700_SERIES) + '$'),
256 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6700_XT_SERIES) + '$'),
257 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6750_XT_SERIES) + '$'),
258 ],
259 AMD_RX_68XX_SERIES_SUBMENU: [
260 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6800_SERIES) + '$'),
261 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6800_XT_SERIES) + '$'),
262 ],
263 AMD_RX_69XX_SERIES_SUBMENU: [
264 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6900_SERIES) + '$'),
265 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6900_XT_SERIES) + '$'),
266 CallbackQueryHandler(graph_func, pattern='^' + str(AMD_RX_6950_XT_SERIES) + '$'),
267 ],
268 INTEL_SERIES_SUBMENU: [
269 CallbackQueryHandler(graph_func, pattern='^' + str(ARC_A310_SERIES) + '$'),
270 CallbackQueryHandler(graph_func, pattern='^' + str(ARC_A380_SERIES) + '$'),
271 ],
272 MATROX_SERIES_SUBMENU: [
273 CallbackQueryHandler(graph_func, pattern='^' + str(MATROX_M9120_SERIES) + '$'),
274 ],
275 GRAPH_SUBMENU: [
276 CallbackQueryHandler(graph_func, pattern='^' + str(GRAPH_MIN) + '$'),
277 CallbackQueryHandler(graph_func, pattern='^' + str(GRAPH_AVERAGE) + '$'),
278 CallbackQueryHandler(graph_func, pattern='^' + str(GRAPH_MAX) + '$'),
279 CallbackQueryHandler(graph_func, pattern='^' + str(SHOW_30_DAYS) + '$'),
280 CallbackQueryHandler(graph_func, pattern='^' + str(SHOW_60_DAYS) + '$'),
281 CallbackQueryHandler(graph_func, pattern='^' + str(SHOW_90_DAYS) + '$'),
282 CallbackQueryHandler(start_over, pattern='^' + str(BACK_TO_MENU) + '$')
283 ],
284 },
285 fallbacks=[
286 CommandHandler('start', start),
287 MessageHandler(Filters.text & ~Filters.command, error_attention),
288 ],
289 )
291 dispatcher.add_handler(conv_handler)
293 # Регистрация команд - ответы в Telegram
294 dispatcher.add_handler(CommandHandler('help', help_func))
296 # Старт бота
297 updater.start_polling()
299 # Бот работает до прерывания Ctrl-C или получения stop команды
300 updater.idle()
303if __name__ == '__main__':
304 main()