@utsiye

Почему не получается добавить подпись к сообщению telebot?

У меня есть message_id и chat_id. Мне нужно скопировать это сообщение, но добавить к описанию или тексту 1 строку. Как это сделать? Я пытался скопировать, а после отредактировать, но возвращается только message_id, без текста.
Код:
discount_mes = bot.copy_message(mes.chat.id,discount['chat_id'],discount['message_id'])
if posting['caption']['enabled']:
            bot.edit_message_text(chat_id=mes.chat.id,message_id=discount_mes.message_id,text=discount_mes.text[:3900]+f'\n{posting["text"]}',parse_mode='HTML')
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Боты не могут запросить сообщение по его ID.

Решение зависит от того, откуда вы получили объект discount. Если всё это происходит внутри функции, в которую он пришел, то просто возьмите text (если он есть), и потом редачьте. Если каким-то образом это не так, и оригинальное сообщение давно было скипнуто, или известно только id сообщения и id чата.

Сделайте вместо copyMessage forwardMessage. Он уже возвращает не только ID сообщения, а весь объект целиком. Если всё же нужно именно сделать copyMessage то я это вижу так:

  1. Делаете forwardMessage куда нибудь себе в приватный чат, в канал или еще куда
  2. Результатом получаете обычный объект Message
  3. Из него дераете свой текст. При желании это сообщение можно удалить
  4. Потом делаете copyMessage в нужный вам чат и там уже редактируете, используя текст, полученный из прошлых пунктов


Колхоз? Наверное, да. Но других вариантов я не знаю честно говоря (естественно за исключением подобной обработки как только целевое сообщение пришло. там сразу можно дернуть текст, сделать копию и отредачить ее, без танцов с форвардом.)

Так что если вы имеете контроль над discount и сами его заполняете, то вставьте туда текст тоже, потом воспользуетесь им. Если это почему-то не так (в чем я сомневаюсь), то план 2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы