Queer European MD passionate about IT
瀏覽代碼

`download_file` behaves differently if a local bot API server is used. Wrong default API url was being used

Davte 1 年之前
父節點
當前提交
3969794075
共有 3 個文件被更改,包括 25 次插入22 次删除
  1. 1 1
      davtelepot/__init__.py
  2. 1 1
      davtelepot/api.py
  3. 23 20
      davtelepot/bot.py

+ 1 - 1
davtelepot/__init__.py

@@ -11,7 +11,7 @@ __author__ = "Davide Testa"
 __email__ = "davide@davte.it"
 __credits__ = ["Marco Origlia", "Nick Lee @Nickoala"]
 __license__ = "GNU General Public License v3.0"
-__version__ = "2.9.10"
+__version__ = "2.9.11"
 __maintainer__ = "Davide Testa"
 __contact__ = "t.me/davte"
 

+ 1 - 1
davtelepot/api.py

@@ -358,7 +358,7 @@ class TelegramBot:
     All mirrored methods are camelCase.
     """
     _loop = None
-    _api_url = "https://api.telegram.org/bot"
+    _api_url = "https://api.telegram.org"
 
     app = aiohttp.web.Application()
     sessions_timeouts = {

+ 23 - 20
davtelepot/bot.py

@@ -2138,26 +2138,29 @@ class Bot(TelegramBot, ObjectWithDatabase, MultiLanguageObject):
         if file is None or isinstance(file, Exception):
             logging.error(f"{file}")
             return file
-        file_bytes = await async_get(
-            url=(
-                f"{self.api_url}/file/"
-                f"bot{self.token}/"
-                f"{file['file_path']}"
-            ),
-            mode='raw'
-        )
-        path = path or self.path
-        if file_name is None:
-            file_name = get_secure_key(length=10)
-        file_complete_path = os.path.join(path, file_name)
-        while os.path.exists(file_complete_path):
-            file_complete_path = file_complete_path + '1'
-        try:
-            with open(file_complete_path, 'wb') as local_file:
-                local_file.write(file_bytes)
-        except Exception as e:
-            logging.error(f"File download failed due to {e}")
-            return e
+        if self.api_url == 'https://api.telegram.org':
+            file_bytes = await async_get(
+                url=(
+                    f"{self.api_url}/file/"
+                    f"bot{self.token}/"
+                    f"{file['file_path']}"
+                ),
+                mode='raw'
+            )
+            path = path or self.path
+            if file_name is None:
+                file_name = get_secure_key(length=10)
+            file_complete_path = os.path.join(path, file_name)
+            while os.path.exists(file_complete_path):
+                file_complete_path = file_complete_path + '1'
+            try:
+                with open(file_complete_path, 'wb') as local_file:
+                    local_file.write(file_bytes)
+            except Exception as e:
+                logging.error(f"File download failed due to {e}")
+                return e
+        else:
+            file_complete_path = file['file_path']
         return dict(file_id=file_id,
                     file_name=file_name,
                     path=path,