Задать вопрос
@nevantain

Как в telegraf отправить фото и в поле caption использовать HTML?

Я делаю бота, эксплорера, по NFT-коллекции, и мне нужно отправить фото, с подписью, это я сделал, а вот как сделать форматирование этой подписи, большой вопрос, т.к. в документации и примерах, я ничего подобного не видел, подскажите кто знает.

Вот код функции:
searchStep.on('text', (ctx) => {
    try {
        ctx.wizard.state.data.number = ctx.message.text;

        if  (isAN(Number(ctx.wizard.state.data.number)) == true) {
            let duckNumber = Number(ctx.message.text);
            let metadata = fs.readFileSync(`/home/chipher/Desktop/code/www/js/ducks_explorer_bot/metadata/${duckNumber}.json`);
            let duckInfo = JSON.parse(metadata);
            console.log(duckInfo)
            console.log(duckInfo['lore'])
            if (typeof(duckInfo['lore']) === 'undefined') {
                ctx.telegram.sendPhoto(ctx.chat.id, { source: `/home/chipher/Desktop/code/www/js/ducks_explorer_bot/img/${duckNumber}.png` });
                ctx.replyWithHTML(`${duckInfo['name']}\n\n<i>У утки нет истории...</i>`);
            } else {
                ctx.telegram.sendPhoto(ctx.chat.id, { source: `/home/chipher/Desktop/code/www/js/ducks_explorer_bot/img/${duckNumber}.png` });
                ctx.replyWithHTML(`${duckInfo['name']}\n\n<i>История:</i>\n${duckInfo['lore']}`);
            }
        } else {
            ctx.reply('Это не число!')
        }
        
    } catch (e) {
        console.log(e)
    }
});


Вот тут я пытался это сделать, пытался отдельными сообщениями, но не помогло т.к. не корректно отправлялись:
ctx.telegram.sendPhoto(ctx.chat.id, { source: `/home/chipher/Desktop/code/www/js/ducks_explorer_bot/img/${duckNumber}.png` });
ctx.replyWithHTML(`${duckInfo['name']}\n\n<i>У утки нет истории...</i>`);
  • Вопрос задан
  • 1171 просмотр
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Krestovsky
@Krestovsky
Можно добавить всё необходимое в Extra.
В данном примере отправляется изображение с подписью и клавиатура, а текст форматируется с использованием HTML.

if (typeof(duckInfo['lore']) === 'undefined') {
    ctx.replyWithPhoto({
        url: `/home/chipher/Desktop/code/www/js/ducks_explorer_bot/img/${duckNumber}.png`
    }, {
        caption: `${duckInfo['name']}\n\n<i>У утки нет истории...</i>`,
        parse_mode: 'HTML,
        ...Markup.inlineKeyboard([
                Markup.button.callback('Foo', 'foo'),
                Markup.button.callback('Bar', 'bar')
        ])
    })
} else {
    ctx.replyWithPhoto({
        url: `/home/chipher/Desktop/code/www/js/ducks_explorer_bot/img/${duckNumber}.png`
    }, {
        caption: `${duckInfo['name']}\n\n<i>История:</i>\n${duckInfo['lore']}`,
        parse_mode: 'HTML',
        ...Markup.inlineKeyboard([
                Markup.button.callback('Foo', 'foo'),
                Markup.button.callback('Bar', 'bar')
        ])
    })
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
23 дек. 2024, в 22:02
30000 руб./за проект
23 дек. 2024, в 22:01
350000 руб./за проект
23 дек. 2024, в 21:32
20000 руб./за проект