2022-06-03 08:09:47 -06:00
|
|
|
import logging
|
|
|
|
|
from functools import wraps
|
|
|
|
|
|
|
|
|
|
from telegram import error
|
|
|
|
|
|
|
|
|
|
from apps.telegram.client import TelegramClient
|
|
|
|
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def handle_missing_token(f):
|
|
|
|
|
@wraps(f)
|
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
|
try:
|
|
|
|
|
TelegramClient()
|
2022-08-02 10:57:12 +01:00
|
|
|
except error.InvalidToken as e:
|
2022-06-03 08:09:47 -06:00
|
|
|
logger.warning(
|
|
|
|
|
"Tried to initialize a Telegram client, but TELEGRAM_TOKEN live setting is invalid or missing. "
|
|
|
|
|
f"Exception: {e}"
|
|
|
|
|
)
|
|
|
|
|
return
|
|
|
|
|
else:
|
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
|
|
|
|
|
|
return decorated
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ignore_bot_deleted(f):
|
|
|
|
|
@wraps(f)
|
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
|
try:
|
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
|
except error.Unauthorized:
|
|
|
|
|
logger.warning(f"Tried to send Telegram message, but user deleted the bot. args: {args}, kwargs: {kwargs}")
|
|
|
|
|
|
|
|
|
|
return decorated
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ignore_message_unchanged(f):
|
|
|
|
|
@wraps(f)
|
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
|
try:
|
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
|
except error.BadRequest as e:
|
2024-08-19 14:05:40 -04:00
|
|
|
if TelegramClient.error_message_is(e, [TelegramClient.BadRequestMessage.MESSAGE_IS_NOT_MODIFIED]):
|
2022-06-03 08:09:47 -06:00
|
|
|
logger.warning(
|
|
|
|
|
f"Tried to change Telegram message, but update is identical to original message. "
|
|
|
|
|
f"args: {args}, kwargs: {kwargs}"
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
raise e
|
|
|
|
|
|
|
|
|
|
return decorated
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ignore_message_to_edit_deleted(f):
|
|
|
|
|
@wraps(f)
|
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
|
try:
|
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
|
except error.BadRequest as e:
|
2024-08-19 14:05:40 -04:00
|
|
|
if TelegramClient.error_message_is(e, [TelegramClient.BadRequestMessage.MESSAGE_TO_EDIT_NOT_FOUND]):
|
2022-06-03 08:09:47 -06:00
|
|
|
logger.warning(
|
|
|
|
|
f"Tried to edit Telegram message, but message was deleted. args: {args}, kwargs: {kwargs}"
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
raise e
|
|
|
|
|
|
|
|
|
|
return decorated
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def ignore_reply_to_message_deleted(f):
|
|
|
|
|
@wraps(f)
|
|
|
|
|
def decorated(*args, **kwargs):
|
|
|
|
|
try:
|
|
|
|
|
return f(*args, **kwargs)
|
|
|
|
|
except error.BadRequest as e:
|
2024-08-19 14:05:40 -04:00
|
|
|
if TelegramClient.error_message_is(e, [TelegramClient.BadRequestMessage.MESSAGE_TO_BE_REPLIED_NOT_FOUND]):
|
2022-06-03 08:09:47 -06:00
|
|
|
logger.warning(
|
|
|
|
|
f"Tried to reply to Telegram message, but message was deleted. args: {args}, kwargs: {kwargs}"
|
|
|
|
|
)
|
|
|
|
|
else:
|
|
|
|
|
raise e
|
|
|
|
|
|
|
|
|
|
return decorated
|