Вы можете решить эту задачу, используя библиотеку `sqlite3` для работы с SQL базами данных.
Во-первых, нужно создать подключение к базе данных и получить курсор для работы с ней. Затем можно выполнить SQL-запрос для извлечения данных.
Вам также потребуется библиотека `python-telegram-bot` для взаимодействия с Telegram Bot API.
Вот пример функции, которая выводит данные из базы данных при нажатии кнопки:
```python
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
from telegram.ext import Updater, CallbackQueryHandler, CommandHandler, CallbackContext
import sqlite3
def start(update: Update, context: CallbackContext) -> None:
keyboard = [
[InlineKeyboardButton("вывести данные", callback_data='1')],
]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text('Пожалуйста выберите:', reply_markup=reply_markup)
def button(update: Update, context: CallbackContext) -> None:
query = update.callback_query
query.answer()
if query.data == '1':
conn = sqlite3.connect('database.db') # создание подключения
cursor = conn.cursor() # получение курсора
cursor.execute('''SELECT * FROM your_table''') # SQL-запрос
rows = cursor.fetchall() # получение всех строк
for row in rows:
query.edit_message_text(' '.join(row)) # отправка данных
conn.close() # закрытие подключения
def main() -> None:
updater = Updater("TOKEN")
updater.dispatcher.add_handler(CommandHandler('start', start))
updater.dispatcher.add_handler(CallbackQueryHandler(button))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
```
В этом примере у вас сначала есть функция `start`, которая отправляет сообщение с кнопкой. Когда пользователь нажимает на кнопку, функция `button` вызывается и извлекает данные из базы данных. Затем эти данные отправляются пользователю.
Пожалуйста, замените `TOKEN` на токен вашего бота и `database.db` на путь к вашей базе данных. `your_table` должно быть заменено на имя вашей таблицы в базе данных.