|
1 | 1 | from io import BytesIO |
2 | 2 |
|
3 | | -from telegram.ext import run_async |
4 | | - |
5 | 3 | from system.config import WOLFRAM_APP_ID |
6 | 4 | from system.db import db |
7 | 5 | from telegram_bot.handlers.utils.decorators import write_logs, send_typing, \ |
|
13 | 11 | from wolfram.api import make_wolfram_request, make_simple_wolfram_request |
14 | 12 |
|
15 | 13 |
|
16 | | -@run_async |
17 | 14 | @write_logs |
18 | 15 | @send_typing |
19 | 16 | @remember_new_user |
20 | 17 | def handle_wolfram_request(bot, update, prefix: str = '') -> int: |
21 | 18 | chat_id = update.message.chat_id |
| 19 | + reply_markup = create_main_reply_markup() |
22 | 20 | request = f'{prefix} {update.message.text}'.strip() |
23 | 21 | current_user = db.session.query(User).filter_by( |
24 | 22 | telegram_id=update.message.from_user.id |
25 | 23 | ).first() |
26 | | - reply_markup = create_main_reply_markup() |
27 | | - |
28 | 24 | if current_user.simple_mode: |
29 | | - answer = make_simple_wolfram_request(request, WOLFRAM_APP_ID) |
30 | | - if not answer: |
31 | | - bot.send_message( |
32 | | - chat_id=chat_id, |
33 | | - text='Unsuccessful. Check your request and try again', |
34 | | - reply_markup=reply_markup |
35 | | - ) |
36 | | - else: |
37 | | - bytes_io = BytesIO(answer) |
38 | | - bot.send_photo( |
39 | | - chat_id=chat_id, |
40 | | - photo=bytes_io, |
41 | | - reply_markup=reply_markup |
42 | | - ) |
43 | | - return MenuEntry.START_MENU.value |
| 25 | + return handle_simple_wolfram_request( |
| 26 | + bot, |
| 27 | + chat_id, |
| 28 | + request, |
| 29 | + reply_markup |
| 30 | + ) |
| 31 | + return handle_detailed_wolfram_request( |
| 32 | + bot, |
| 33 | + chat_id, |
| 34 | + request, |
| 35 | + reply_markup |
| 36 | + ) |
| 37 | + |
| 38 | + |
| 39 | +def handle_simple_wolfram_request( |
| 40 | + bot, |
| 41 | + chat_id, |
| 42 | + request, |
| 43 | + reply_markup |
| 44 | +) -> int: |
| 45 | + answer = make_simple_wolfram_request(request, WOLFRAM_APP_ID) |
| 46 | + if not answer: |
| 47 | + bot.send_message( |
| 48 | + chat_id=chat_id, |
| 49 | + text='Unsuccessful. Check your request and try again', |
| 50 | + reply_markup=reply_markup |
| 51 | + ) |
| 52 | + else: |
| 53 | + bytes_io = BytesIO(answer) |
| 54 | + bot.send_photo( |
| 55 | + chat_id=chat_id, |
| 56 | + photo=bytes_io, |
| 57 | + reply_markup=reply_markup |
| 58 | + ) |
| 59 | + return MenuEntry.START_MENU.value |
| 60 | + |
44 | 61 |
|
| 62 | +def handle_detailed_wolfram_request( |
| 63 | + bot, |
| 64 | + chat_id, |
| 65 | + request, |
| 66 | + reply_markup |
| 67 | +) -> int: |
45 | 68 | answer = make_wolfram_request(request, WOLFRAM_APP_ID) |
46 | 69 | parsed_answer = parse_wolfram_answer(answer) |
47 | 70 | for message in parsed_answer[:-1]: |
|
0 commit comments