Почему не отправляется сообщение в телеграм из-за тега в строке?
Всем привет, бот отправляет сообщение в телеграм и все работает, но если добавляю в результирующую строку row[7], то вылазит ошибка post_text error, которая прописана в коде. Единственное, чем отличается эта строка от остальных, внутри нее есть тег переноса строки "br". Ниже сам код. Мне кажется, что просто еще чего-то не хватает(какого-то модуля), так как все закомментированное в коде когда я подставляю - оно отправляет и делает текст жирным в телеграме из-за тега "b". Саму строку в консоли тоже печатает, ошибка только в отправке.
import telebot
import config
import random
import requests
import pyodbc
server = 'ИМЯ СЕРВЕРА'
database = 'ИМЯ БД'
username = 'ИМЯ ПОЛЬЗОВАТЕЛЯ'
password = 'ПАРОЛЬ'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()
cursor.execute('SELECT TOP 1 className, eqpName, partName, nodeName, core, opisanie, FIO, serviceName FROM smsTelegram ORDER BY problemID DESC')
for row in cursor:
text = row[7]
# '<b>Класс проблемы: </b>'+row[0]+\
# '\n<b>Оборудование: </b>'+row[1]+\
# '\n<b>Часть оборудования: </b>'+row[2]+\
# '\n<b>Узел: </b>'+row[3]+\
# '\n<b>Суть: </b>'+row[4]+\
# '\n<b>Детали: </b>'+row[5]+\
# '\n<b>Служба: </b>'+row[7]+\
# '\n<b>Специалист: </b>'+row[6]
print(row[7])
def send_telegram(text: str):
token = "TOKEN"
url = "https://api.telegram.org/bot"
channel_id = CHAT ID
url += token
method = url + "/sendMessage"
r = requests.post(method, data={
"chat_id": channel_id,
"text": text,
"parse_mode": 'html'
})
if r.status_code != 200:
raise Exception("post_text error")
if __name__ == '__main__':
send_telegram(text)
Ответы (1 шт):
Попробуйте вместо <br> добавить \n.
Например, перед отправкой:
text = text.replace("<br>", "\n").replace("<br/>", "\n")
Согласно описанию документации https://core.telegram.org/bots/api#html-style доступны только следующие теги:
<b>bold</b>, <strong>bold</strong>
<i>italic</i>, <em>italic</em>
<u>underline</u>, <ins>underline</ins>
<s>strikethrough</s>, <strike>strikethrough</strike>, <del>strikethrough</del>
<b>bold <i>italic bold <s>italic bold strikethrough</s> <u>underline italic bold</u></i> bold</b>
<a href="http://www.example.com/">inline URL</a>
<a href="tg://user?id=123456789">inline mention of a user</a>
<code>inline fixed-width code</code>
<pre>pre-formatted fixed-width code block</pre>
<pre><code class="language-python">pre-formatted fixed-width code block written in the Python programming language</code></pre>