Чтобы реализовать отправку сообщения пользователю при нажатии на кнопку "принять" в вашем коде с использованием библиотек Telebot и SQLite3, вам нужно выполнить несколько шагов. Предположим, у вас есть таблица в SQLite с названиями, например, `users`, где вы храните `user_id` пользователей.
Вот как можно это реализовать:
1. Добавьте кнопку "принять" на ваше меню.
2. Обработайте нажатие этой кнопки, чтобы отправить сообщение пользователю на основании его `user_id`, который должен быть доступен в вашей базе данных.
Приведенный ниже код является примером, как это может выглядеть:
```python
import sqlite3
import telebot
from telebot import types
token = '***************'
bot = telebot.TeleBot(token)
# Подключение к базе данных
conn = sqlite3.connect('/Users/User/PycharmProjects/pythonProject3/.venv/db/database', check_same_thread=False)
cursor = conn.cursor()
@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
if call.message:
if call.data == 'menu1':
markup = types.InlineKeyboardMarkup()
switch_button3 = types.InlineKeyboardButton(text='fragolino', callback_data="menu4")
markup.add(switch_button3)
switch_button4 = types.InlineKeyboardButton(text='fragolino2', callback_data="menu4")
markup.add(switch_button4)
switch_button5 = types.InlineKeyboardButton(text='fragolino3', callback_data="menu4")
markup.add(switch_button5)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="выбери товар", reply_markup=markup)
if call.data == 'oper':
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Наш оператор @fluacyl, оступен с 8:00-23:00")
if call.data == 'menu4':
markup = types.InlineKeyboardMarkup()
switch_button3 = types.InlineKeyboardButton(text='btc', callback_data="menu5")
markup.add(switch_button3)
switch_button4 = types.InlineKeyboardButton(text='efr', callback_data="menu6")
markup.add(switch_button4)
switch_button5 = types.InlineKeyboardButton(text='Принять', callback_data="accept_order")
markup.add(switch_button5)
bot.edit_message_text(chat_id=call.message.chat.id, message_id=call.message.message_id, text="Выберите опцию:", reply_markup=markup)
if call.data == 'accept_order':
user_id = call.from_user.id # Получаем user_id
# Пример запроса к БД для получения user_id (если у вас есть таблица users)
cursor.execute("SELECT telegram_id FROM users WHERE user_id = ?", (user_id,))
result = cursor.fetchone()
if result:
user_telegram_id = result[0] # предположим, что id Telegram - это первый столбец
bot.send_message(user_telegram_id, "Ваш заказ принят!") # Отправляем сообщение пользователю
else:
bot.send_message(call.message.chat.id, "Не удалось найти пользователя в базе данных.")
# Запуск бота
bot.polling(none_stop=True)
```
### Объяснение кода:
1. **Кнопка "Принять"**: Мы добавляем новую кнопку с `callback_data="accept_order"` в обработчик для кнопки `menu4`.
2. **Обработка нажатия кнопки "Принять"**: При нажатии на кнопку извлекается `user_id` из `call.from_user.id`.
3. **Запрос в БД**: Выполняется SQL-запрос для получения `telegram_id` соответствующего пользователя по вашему `user_id`.
4. **Отправка сообщения**: Если `telegram_id` найден, бот отправляет сообщение этому пользователю.
Не забывайте адаптировать код в зависимости от конкретной схемы вашей базы данных и логики приложения.