@Elvira15

Как сделать закрытый Telegram бот?

Добрый вечер, есть телеграм бот и база данных в MySQL. В базе есть id, имя и фамилия нескольких пользователей. Как сделать, чтобы при нажатие на кнопку старт бот отвечал только тем пользователям, который есть в БД? Вот сама база
cursor.execute("CREATE TABLE Dostyp (Iduser INT, Firstname VARCHAR(30), Lastname VARCHAR(40), PRIMARY KEY (Iduser))")
sql="INSERT INTO Dostyp (Iduser, Firstname, Lastname) VALUES (%s,%s,%s)"
val=[
("858144890", "РЧИиыа", "Ротвоало"),
("1487241837", "Рирмраа", "Ртавоавдл"),

Вот реакция бота на команду /start
@bot.message_handler(commands=['start'])
def welcome(message):
    # keyboard
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("Номер ветеринарной клиники")
    item2 = types.KeyboardButton("Провести консультацию")
 
    markup.add(item1, item2)
 
    bot.send_message(message.chat.id, "Добро пожаловать, {0.first_name}!\nЯ - {1.first_name} бот, который поможет разобраться с самочувствием млекопитающих в вашем дельфинарии.".format(message.from_user, bot.get_me()),  reply_markup=markup)
  • Вопрос задан
  • 150 просмотров
Решения вопроса 2
@Studentka1996
Сохраните необходимые chat_id в БД либо сразу в коде впишите. Отправляйте, что нужно с помощью if else

# Обработка команды /start (реагирование бота)
@bot.message_handler(commands = ['start'])
def start_msg(message):
 if message.chat.id ==  or  message.chat.id == or...: # идентифицирую юзеров по chat_id
  bot.send_message(message.chat.id, f' Привет, {message.chat.first_name}')
#что-то..
else: 
  bot.send_message(message.chat.id, 'Функционал бота для Вас не доступен :(')


Совет: распечатайте message, получите массив данных (json) в котором вытягиваете нужные значение а после сравнивайте))
60b25922888ce592519251.png
НЕ запускала, думаю так. Удачи!
Ответ написан
@o5a
def get_access_status(user_id):
    cursor.execute("SELECT 1 FROM Dostyp WHERE Iduser = %s", (user_id, ))
    return bool(cursor.fetchone())

# сам проверка в функции
@bot.message_handler(commands=['start'])
def welcome(message):
    if get_access_status(message.from_user.id):
        # доступ есть, продолжаем
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы