Co-authored-by: Eve832 <eve.meelan@grafana.com>
Co-authored-by: Francisco Montes de Oca <nevermind89x@gmail.com>
Co-authored-by: Ildar Iskhakov <ildar.iskhakov@grafana.com>
Co-authored-by: Innokentii Konstantinov <innokenty.konstantinov@grafana.com>
Co-authored-by: Julia <ferril.darkdiver@gmail.com>
Co-authored-by: maskin25 <kengurek@gmail.com>
Co-authored-by: Matias Bordese <mbordese@gmail.com>
Co-authored-by: Matvey Kukuy <motakuk@gmail.com>
Co-authored-by: Michael Derynck <michael.derynck@grafana.com>
Co-authored-by: Richard Hartmann <richih@richih.org>
Co-authored-by: Robby Milo <robbymilo@fastmail.com>
Co-authored-by: Timur Olzhabayev <timur.olzhabayev@grafana.com>
Co-authored-by: Vadim Stepanov <vadimkerr@gmail.com>
Co-authored-by: Yulia Shanyrova <yulia.shanyrova@grafana.com>
86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
import logging
|
|
from functools import wraps
|
|
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
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()
|
|
except (ImproperlyConfigured, error.InvalidToken) as e:
|
|
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:
|
|
if "Message is not modified" in e.message:
|
|
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:
|
|
if "Message to edit not found" in e.message:
|
|
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:
|
|
if "Replied message not found" in e.message:
|
|
logger.warning(
|
|
f"Tried to reply to Telegram message, but message was deleted. args: {args}, kwargs: {kwargs}"
|
|
)
|
|
else:
|
|
raise e
|
|
|
|
return decorated
|