Выделить жирным выводимый ботом текст

Рейтинг: 1Ответов: 1Опубликовано: 09.06.2023

Столкнулся с такой проблемой: хочу, чтобы бот выводил выделенный текст, но он выводит его с двумя звездочками спереди и сзади. В чем проблема? введите сюда описание изображения

import telebot
from telebot import types

token = ''
bot = telebot.TeleBot(token)

@bot.message_handler(commands = ['start'])
def start(message):
    markup = types.InlineKeyboardMarkup()
    k1 = types.InlineKeyboardButton(text = 'Привет', callback_data = 'load_test')
    markup.add(k1)
    bot.send_message(message.chat.id, '**Привет**!', reply_markup = markup)

bot.polling()
 

Ответы

▲ 3

Вариант 1 - ЧЕРЕЗ HTML РАЗМЕТКУ

Используйте HTML-разметку для формирования различного форматирования текста, в данном случае вам подойдет тэг <b> </b>, а при отправке сообщения через send_message используйте параметр parse_mode='HTML'. Ваш код будет выглядеть следующим образом:

import telebot
from telebot import types

token = 'ВАШ ТОКЕН'
bot = telebot.TeleBot(token)

@bot.message_handler(commands = ['start'])
def start(message):
    markup = types.InlineKeyboardMarkup()
    k1 = types.InlineKeyboardButton(text = 'Привет', callback_data = 'load_test')
    markup.add(k1)
    # формируем сообщение жирным шрифтом через HTML тэг
    message_text = "<b>Привет</b>!"
    bot.send_message(message.chat.id, message_text, reply_markup = markup, parse_mode='HTML')

bot.polling()

Результат будет выглядеть следующим образом:

введите сюда описание изображения


Вариант 2 - ЧЕРЕЗ MarkdownV2

По сути передавая в качестве параметра parse_mode='MarkdownV2' в send_message мы можем использовать MarkdowvnV2 разметку, которая обладает своими правилами в оформлении. Мы должны обязательно экранировать восклицательный знак !, так как данный символ является инструкцией для MarkdownV2.

Ваш код:

import telebot
from telebot import types

token = 'ВАШ ТОКЕН'
bot = telebot.TeleBot(token)

@bot.message_handler(commands = ['start'])
def start(message):
    markup = types.InlineKeyboardMarkup()
    k1 = types.InlineKeyboardButton(text = 'Привет', callback_data = 'load_test')
    markup.add(k1)
    # экранируем восклицательный знак и формируем через MarkdownV2 как жирный шрифт
    message_text = "*Привет\\!*" 
    bot.send_message(message.chat.id, message_text, reply_markup = markup, parse_mode='MarkdownV2')

bot.polling()

Результат:

введите сюда описание изображения


P.S. Если кому-то показалось, что шрифт не жирный, сравним в двух методах.

  • HTML разметка:
...
    message_text = "<b>Привет</b>! и обычный привет"
    bot.send_message(message.chat.id, message_text, reply_markup = markup, parse_mode='HTML')
...

Результат:

введите сюда описание изображения

Как можем видеть, первый Привет в жирном шрифте, другой в обычном, аналогично ниже.

  • MarkdownV2 разметка:
...
    message_text = "*Привет\\!* и обычный привет" 
    bot.send_message(message.chat.id, message_text, reply_markup = markup, parse_mode='MarkdownV2')
...

Результат:

введите сюда описание изображения