Телеграмм бот. Не приходит результат выполнения функции

При нажатии кнопки "Повторы" должен приходить результат выполнения функции. Функция у меня - это 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)
→ Ссылка