Телеграмм бот. Не приходит результат выполнения функции
При нажатии кнопки "Повторы" должен приходить результат выполнения функции. Функция у меня - это sql запрос. В терминале ответ приходит. Не понимаю как мне осуществить это. Бот присылает ошибку, что сообщение пустое. И как я понимаю, ошибка в том, что сначала должна выполниться функция, но я не понимаю как это реализовать
@bot.message_handler(content_types=["text"])
def handle_text(message):
if message.text.strip() == 'Повторы':
bot.send_message(message.from_user.id, repetition())
Функция
def repetition():
conn = cx_Oracle.connect (username, password, HOST+":"+PORT+"/"+SERVICE_NAME)
print('Connecting!')
cursor = conn.cursor()
sql = q1
cursor.execute(sql)
alldata = cursor.fetchall()
for i in alldata:
print(i[0])
cursor.close()
conn.close()
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Нужно переделать функцию для сборка данных в строку и ее вернуть
Пример:
def repetition() -> str:
conn = cx_Oracle.connect (username, password, HOST+":"+PORT+"/"+SERVICE_NAME)
print('Connecting!')
cursor = conn.cursor()
sql = q1
cursor.execute(sql)
alldata = cursor.fetchall()
lines = []
for i in alldata:
lines.append(str(i[0]))
cursor.close()
conn.close()
return '\n'.join(lines)
В одну строку:
lines = [str(i[0]) for i in alldata]
Без списка:
return '\n'.join(str(i[0]) for i in alldata)