F3ANG, разницы тоже нет. В первом варианте answer из класса Message автоматически достает id чата, во втором же варианте он берется руками. Ради сокращения первый предпочтительнее. Ну и во втором всё же надо подправить на call.from_user.id ID чата.
Еще заметил, что разные параметры функций.
Между message: types.Message и call: types.CallbackQuery разницы нет, кроме наименования переменной. Аннотации типов тоже здесь нужны только для удобства. Но, так как в обработчик колбэков всегда приходит CallbackQuery, то нужно использовать его. Хоть и на работоспособность это не влияет, но путать код не нужно.
Так что более правильным вариантом будет:
1. Любой хэндлер, lambda c: c.data == "random_value") и text="random_value" выполняют одинаковую роль
2. В функцию всегда приходит CallbackQuery, поэтому call: types.CallbackQuery
3. Любой метод отправки, call.message.answer и bot.send_message выполняют одинаковую роль. Разница есть только при использовании answer_callback_query либо call.answer
Bl4ckm45k, код 1:1 без передачи доп заголовков?
Можно попробовать указать просто 'distributorId': open('full_path_to_file', 'rb'), без определения имени вручную. 329645 сделать числом, хотя это вряд ли поможет. Но вообще передача всех параметров в мультипарте так и выглядит
EvanN, потому что каждое фото - отдельный ивент. И декоратор срабатывает каждый раз. Можно проверять есть ли несколько изображений в сообщении, для этого есть поле message. media_group_id, собственно, если оно есть - значит файлов несколько
answer
из классаMessage
автоматически достает id чата, во втором же варианте он берется руками. Ради сокращения первый предпочтительнее. Ну и во втором всё же надо подправить наcall.from_user.id
ID чата.Есть еще один метод у
CallbackQuery
-answer
вот между ними уже есть разница.
Еще заметил, что разные параметры функций.
Между
message: types.Message
иcall: types.CallbackQuery
разницы нет, кроме наименования переменной. Аннотации типов тоже здесь нужны только для удобства. Но, так как в обработчик колбэков всегда приходитCallbackQuery
, то нужно использовать его. Хоть и на работоспособность это не влияет, но путать код не нужно.Так что более правильным вариантом будет:
1. Любой хэндлер,
lambda c: c.data == "random_value")
иtext="random_value"
выполняют одинаковую роль2. В функцию всегда приходит
CallbackQuery
, поэтомуcall: types.CallbackQuery
3. Любой метод отправки,
call.message.answer
иbot.send_message
выполняют одинаковую роль. Разница есть только при использовании answer_callback_query либо call.answer