mirror of
https://github.com/PaiGramTeam/PaiGram.git
synced 2024-11-16 04:35:49 +00:00
🐛 Fix wrong file identifier specified
When encountering an error file ID, it should be removed from the cache.
This commit is contained in:
parent
e086f011a1
commit
7bca698c18
@ -4,7 +4,6 @@ from hashlib import sha256
|
||||
from typing import Any, Optional
|
||||
|
||||
from core.base_service import BaseService
|
||||
|
||||
from core.dependence.redisdb import RedisDB
|
||||
|
||||
__all__ = ["TemplatePreviewCache", "HtmlToFileIdCache"]
|
||||
@ -51,6 +50,9 @@ class HtmlToFileIdCache(BaseService.Component):
|
||||
if ttl != -1:
|
||||
await self.client.expire(ck, ttl)
|
||||
|
||||
async def delete_data(self, html: str, file_type: str) -> bool:
|
||||
return await self.client.delete(self.cache_key(html, file_type))
|
||||
|
||||
def cache_key(self, html: str, file_type: str) -> str:
|
||||
key = sha256(html.encode()).hexdigest()
|
||||
return f"{self.qname}:{file_type}:{key}"
|
||||
|
@ -2,6 +2,7 @@ from enum import Enum
|
||||
from typing import List, Optional, Union
|
||||
|
||||
from telegram import InputMediaDocument, InputMediaPhoto, Message
|
||||
from telegram.error import BadRequest
|
||||
|
||||
from core.services.template.cache import HtmlToFileIdCache
|
||||
from core.services.template.error import ErrorFileType, FileIdNotFound
|
||||
@ -55,7 +56,13 @@ class RenderResult:
|
||||
if self.file_type != FileType.PHOTO:
|
||||
raise ErrorFileType
|
||||
|
||||
reply = await message.reply_photo(photo=self.photo, *args, **kwargs)
|
||||
try:
|
||||
reply = await message.reply_photo(photo=self.photo, *args, **kwargs)
|
||||
except BadRequest as exc:
|
||||
if "Wrong file identifier" in exc.message and isinstance(self.photo, str):
|
||||
await self._cache.delete_data(self.html, self.file_type.name)
|
||||
raise BadRequest(message="Wrong file identifier specified")
|
||||
raise exc
|
||||
|
||||
await self.cache_file_id(reply)
|
||||
|
||||
@ -66,7 +73,13 @@ class RenderResult:
|
||||
if self.file_type != FileType.DOCUMENT:
|
||||
raise ErrorFileType
|
||||
|
||||
reply = await message.reply_document(document=self.photo, *args, **kwargs)
|
||||
try:
|
||||
reply = await message.reply_document(document=self.photo, *args, **kwargs)
|
||||
except BadRequest as exc:
|
||||
if "Wrong file identifier" in exc.message and isinstance(self.photo, str):
|
||||
await self._cache.delete_data(self.html, self.file_type.name)
|
||||
raise BadRequest(message="Wrong file identifier specified")
|
||||
raise exc
|
||||
|
||||
await self.cache_file_id(reply)
|
||||
|
||||
@ -81,7 +94,13 @@ class RenderResult:
|
||||
media=self.photo, caption=self.caption, parse_mode=self.parse_mode, filename=self.filename
|
||||
)
|
||||
|
||||
edit_media = await message.edit_media(media, *args, **kwargs)
|
||||
try:
|
||||
edit_media = await message.edit_media(media, *args, **kwargs)
|
||||
except BadRequest as exc:
|
||||
if "Wrong file identifier" in exc.message and isinstance(self.photo, str):
|
||||
await self._cache.delete_data(self.html, self.file_type.name)
|
||||
raise BadRequest(message="Wrong file identifier specified")
|
||||
raise exc
|
||||
|
||||
await self.cache_file_id(edit_media)
|
||||
|
||||
|
@ -148,6 +148,8 @@ class ErrorHandler(Plugin):
|
||||
raise ApplicationHandlerStop
|
||||
elif "Not enough rights" in context.error.message:
|
||||
notice = self.ERROR_MSG_PREFIX + "权限不足,请检查对应权限是否开启"
|
||||
elif "Wrong file identifier specified" in context.error.message:
|
||||
notice = self.ERROR_MSG_PREFIX + "文件标识符未找到 ~ 请稍后再试"
|
||||
else:
|
||||
logger.error("python-telegram-bot 请求错误", exc_info=context.error)
|
||||
notice = self.ERROR_MSG_PREFIX + "telegram-bot-api请求错误 ~ 请稍后再试"
|
||||
|
Loading…
Reference in New Issue
Block a user