а
Size: a a a
а
а
GV
NK
DS
@Decorator()Проблема:
def message_handler(update, context):
pass
def callback_handler(update, context):
message_handler(update=update, context=context)
def decorator(some_arg = None):
def inner_decorator(function):
def wrapper(*args, **kwargs):
update = args[0]
update.message.reply_text(text='Foo')
return function(*args, **kwargs)
return wrapper
return inner_decorator
*args), а Callback handler передает ему значения по ключу, это ожидаемо ведет к ошибке. if, но сомневаюсь, что это гуд стайл. if ищут объект `update.message.reply_text в аргументах. Иногда я передаю целиком update, иногда update.message и т.п.def decorator(end: bool = False):
def inner_decorator(function):
def wrapper(*args, **kwargs):
if args:
update_message_reply_text = args[0]
elif 'update_message' in kwargs:
update_message_reply_text = kwargs['update_message'].reply_text
elif 'update_message_reply_text' in kwargs:
update_message_reply_text = kwargs['update_message_reply_text']
elif 'reply_text' in kwargs:
update_message_reply_text = kwargs['reply_text']
else:
update_message_reply_text = lambda text: logger.warning('Incorrect "bot_logger" usage,'
'Can not notify user about exception!')
try:
return function(*args, **kwargs)
except Exception as e:
update_message_reply_text(text=f'Неизвестная ошибка. Попробуйте повторить попытку позднее')
logger.error(e)
return -1 if end else None
return wrapper
return inner_decorator
DA
DS
compose_message, - вот она вызывается напрямую из callback_handler и message_handler, ей нужен метод из объекта update, что бы отправить сообщение в ответ.M
M
DA
DA
DS
bot, он взаимодействует с телегой и юзером (но ему обычно нужен юзер_айди).update, он напоминает бота, но имеют урезанный функционал.update, но изредка приходится использовать и bot.bot - взаимодествует с телегой, я ему добавил немного полезных методов от себя (декораторы для обработчиков).User - общается с крудомflow - содержит обработчики.flow (его обработчики) принимает update от клиента, вызывает методы юзера (который имеет доступ к crud), и изредка юзер использует объект bot. Получается, что bot используется и во flow и в userDS
compose_message (которому нужен update или bot) нужно сделать как метод юзераDS
user внутри него (у которого теперь есть объект bot для отправки результата анпрямую).flwo), user будет отправлять результат, то и его по факту нужно декорировать. Это как-то странно:
A
A
:
: