2
2
# 2023
3
3
4
4
import logging
5
- import os
6
5
import time
7
6
import traceback
8
- from io import BufferedRWPair , BufferedIOBase , BytesIO , FileIO
7
+ from io import BytesIO
9
8
10
9
import requests
11
10
from sqlalchemy import create_engine
@@ -96,29 +95,27 @@ async def handler_unknown_command(update: Update, context: ContextTypes.DEFAULT_
96
95
97
96
@handler
98
97
async def handler_print (update : Update , context : ContextTypes .DEFAULT_TYPE ):
99
- t = time .time ()
100
98
requisites = __auth (update )
101
99
if requisites is None :
102
100
await context .bot .send_message (chat_id = update .message .chat .id ,
103
101
text = ans ['doc_not_accepted' ])
104
102
return
105
103
try :
106
- fff , filename = await __get_attachments (update , context )
104
+ filebytes , filename = await __get_attachments (update , context )
107
105
except FileSizeError :
108
106
await update .message .reply_text (text = ans ['file_size_error' ].format (update .message .document .file_name ),
109
107
reply_to_message_id = update .message .id ,
110
108
parse_mode = ParseMode ('HTML' ))
111
109
return
112
- except FileNotFoundError :
110
+ except TelegramError :
113
111
await update .message .reply_text (text = ans ['download_error' ], reply_to_message_id = update .message .id )
114
112
return
115
113
116
114
r = requests .post (settings .PRINT_URL + '/file' ,
117
115
json = {'surname' : requisites [1 ], 'number' : requisites [2 ], 'filename' : filename })
118
116
if r .status_code == 200 :
119
117
pin = r .json ()['pin' ]
120
- files = {'file' : (filename , fff .getvalue (), 'application/pdf' , {'Expires' : '0' })}
121
- # rfile = requests.post(settings.PRINT_URL + '/file/' + pin, files=files)
118
+ files = {'file' : (filename , filebytes .getvalue (), 'application/pdf' , {'Expires' : '0' })}
122
119
rfile = requests .post (settings .PRINT_URL + '/file/' + pin , files = files )
123
120
if rfile .status_code == 200 :
124
121
reply_markup = InlineKeyboardMarkup (
@@ -130,7 +127,6 @@ async def handler_print(update: Update, context: ContextTypes.DEFAULT_TYPE):
130
127
disable_web_page_preview = True ,
131
128
parse_mode = ParseMode ('HTML' ))
132
129
marketing .print_success (tg_id = update .message .chat .id , surname = requisites [1 ], number = requisites [2 ])
133
- print ('Print time' , time .time () - t )
134
130
return
135
131
136
132
await context .bot .send_message (chat_id = update .effective_user .id ,
@@ -234,21 +230,9 @@ class FileSizeError(Exception):
234
230
235
231
236
232
async def __get_attachments (update , context ):
237
- if not os .path .exists (settings .PDF_PATH ):
238
- os .makedirs (settings .PDF_PATH )
239
- if not os .path .exists (os .path .join (settings .PDF_PATH , str (update .message .chat .id ))):
240
- os .makedirs (os .path .join (settings .PDF_PATH , str (update .message .chat .id )))
241
- path_to_save = os .path .join (settings .PDF_PATH , str (update .message .chat .id ), update .message .document .file_name )
242
233
if update .message .document .file_size / 1024 ** 2 > settings .MAX_PDF_SIZE_MB :
243
234
raise FileSizeError
244
- file = await context .bot .get_file (update .message .document .file_id )
245
- fff = BytesIO ()
246
- await file .download_to_memory (fff )
247
- with open ("output.pdf" , "wb" ) as f :
248
- f .write (fff .getbuffer ())
249
- # return fff
250
- # await file.download_to_drive(custom_path=path_to_save)
251
- # if not os.path.exists(path_to_save):
252
- # raise FileNotFoundError
253
- return fff , update .message .document .file_name
254
- # return path_to_save, update.message.document.file_name
235
+ file_info = await context .bot .get_file (update .message .document .file_id )
236
+ filebytes = BytesIO ()
237
+ await file_info .download_to_memory (filebytes )
238
+ return filebytes , update .message .document .file_name
0 commit comments