Telegram Bot Language User | telebot

Хочу сделать команду /lang

Задача команды:

  • Пользователь вызывает команду /lang в группе(очень важно чтобы это работало в группе)
  • Бот отвечает на сообщение тем что выдает на выбор две кнопки. Одна на которой Русский а вторая Английский.
  • Если пользователь выберет русский, то все команды будут выноситься на русском языке, ну так же в противоположном случае если выбрать английский.
  • Но это касается определенного пользователя

Описание того как я вижу создание данной команды:

После использования команды бот создает специальную базу данных, в которой после того как пользователь выберет язык бота внесется id пользователя а так же язык который он выбрал. Дальше к каждой существующей команде нужно добавить последовательность действий которая соединяет функцию if с данными из базы данных для того чтобы понять какой текст отправить пользователю.

Я плюс минус сделал то что описал, но у меня нет достаточно знаний чтобы понять как решить определенные проблемы. Надеюсь на помощь в том как написать или как правильно оформить данную структуру и тд. Спасибо

import telebot
from telebot import types
import sqlite3

# Создание бота
bot = telebot.TeleBot('TOKEN_BOT')


# Функция для создания соединения с базой данных
def create_connection():
    return sqlite3.connect('user_preferences.db')


# Функция для получения предпочтительного языка пользователя из базы данных
def get_user_language(user_id):
    conn = create_connection()
    cursor = conn.cursor()
    cursor.execute("SELECT language FROM user_languages WHERE user_id=?", (user_id,))
    language = cursor.fetchone()
    conn.close()
    if language:
        return language[0]
    else:
        return 'English'  # Возвращаем английский язык по умолчанию


# Функция для обновления предпочтительного языка пользователя в базе данных
def update_user_language(user_id, language):
    conn = create_connection()
    cursor = conn.cursor()
    cursor.execute("REPLACE INTO user_languages (user_id, language) VALUES (?, ?)", (user_id, language))
    conn.commit()
    conn.close()


@bot.message_handler(commands=['lang'])
def set_language(message):
    markup = types.ReplyKeyboardMarkup(row_width=2)
    item_russian = types.KeyboardButton('Russian ??')
    item_english = types.KeyboardButton('English ??')
    markup.add(item_russian, item_english)
    bot.send_message(message.chat.id, "Please select your language:", reply_markup=markup)


@bot.message_handler(func=lambda message: True)
def handle_messages(message):
    user_language = get_user_language(message.chat.id)
    if user_language == 'Russian':
        response_text = "Привет! Это сообщение на русском языке."
    else:
        response_text = "Hello! This is a message in English."
    bot.send_message(message.chat.id, response_text)


@bot.callback_query_handler(func=lambda call: True)
def callback_query_handler(call):
    user_id = call.from_user.id
    if call.data == 'Russian':
        update_user_language(user_id, 'Russian')
    elif call.data == 'English':
        update_user_language(user_id, 'English')
    bot.send_message(call.message.chat.id, f"Your language preference has been updated to {call.data}")


# Запуск бота
bot.polling(none_stop=True)



Ответы (0 шт):