diff --git a/defTelegram.py b/defTelegram.py index d5da824..7290b4d 100644 --- a/defTelegram.py +++ b/defTelegram.py @@ -1,4 +1,17 @@ def sendTeleg(photo, message, config): + try: + from telegram import __version_info__ + except ImportError: + __version_info__ = (0, 0, 0, 0, 0) + if __version_info__ < (20, 0, 0, "alpha", 5): + sent = sendTelegOld(photo, message, config) + return sent + else: + import asyncio + sent = asyncio.run(t_send_photo(photo,message,config)) + return sent + +def sendTelegOld(photo, message, config): import telegram sent = False retry_c = 0 @@ -6,6 +19,45 @@ def sendTeleg(photo, message, config): try: bot = telegram.Bot(token=config.get('TELEGRAM', 'BOT_TOKEN'), request=telegram.utils.request.Request(connect_timeout=20, read_timeout=20)) sent = bot.send_photo(chat_id=config.get('TELEGRAM', 'ROOM_ID'), photo=photo, caption=message, parse_mode=telegram.ParseMode.MARKDOWN, timeout=20) + except Exception as err: + print('err.args:') + print(err.args) + print(f"Unexpected {err=}, {type(err)=}") + print("\nString err:\n"+str(err)) + if retry_c > 4: + print('Telegram attempts exceeded. Message not sent.') + break + elif str(err) == 'Unauthorized': + print('Invalid Telegram bot token, message not sent.') + break + elif str(err) == 'Timed out': + retry_c += 1 + print('Telegram timeout count: '+str(retry_c)) + pass + elif str(err) == 'Chat not found': + print('Invalid Telegram Chat ID, message not sent.') + break + elif str(err)[:35] == '[Errno 2] No such file or directory': + print('Telegram module couldn\'t find an image to sent.') + break + elif str(err) == 'Media_caption_too_long': + print('Telegram image caption length exceeds 1024 characters. Message not sent.') + break + else: + print('[X] Unknown Telegram error. Message not sent.') + break + else: + print("Telegram message successfully sent.") + return sent + +async def t_send_photo(photo,message,config): + import telegram + sent = False + retry_c = 0 + while sent == False: + try: + bot = telegram.Bot(token=config.get('TELEGRAM', 'BOT_TOKEN')) + sent = await bot.send_photo(chat_id=config.get('TELEGRAM', 'ROOM_ID'), photo=photo, caption=message) except Exception as err: print('err.args:') print(err.args) @@ -28,7 +80,7 @@ def sendTeleg(photo, message, config): print('Telegram module couldn\'t find an image to send.') break elif str(err) == 'Media_caption_too_long': - print('Telegram image caption length exceeds 1024 characters. Message not send.') + print('Telegram image caption length exceeds 1024 characters. Message not sent.') break else: print('[X] Unknown Telegram error. Message not sent.')