@manmai

Не удается создать авторизацию по сhat.id пользователя в Телеграм боте Python. В чем проблема?

Существует необходимость предоставить функционал бота только определенным пользователям по их id.
Я создал переменную objects в которой прописал допустимые id'шники пользователей, но столкнулся с проблемой ,бот отказывается сверять message.chat.id со значениями в переменной. Почему?
# -*- coding: utf-8 -*-
import telebot #подключение библиотеки Телеграм бота


#Токен доступа к боту
token = 'ТОКЕН'
bot = telebot.TeleBot(token)
#Список разрешенных id
objects = {"4822994**", "4114264**"} 

#Клавиатура главного меню
keyboard = telebot.types.ReplyKeyboardMarkup(True)
keyboard.row('/calculator','/timetable')
keyboard.row('/about','/help')
keyboard.row('/feedback')


@bot.message_handler(commands=['start'])
def start_message(message):
    if message.chat.id in objects: #Как заставить его прочитать id пользователя и сверить его с id в objects
        print("Аутентификация прошла успешно.")
        bot.send_message(message.chat.id, 'Вас приветствует Bot!', reply_markup=keyboard)
    elif message.chat.id not in objects:
        print("Аутентификация не пройдена.")
        bot.send_message(message.chat.id,'К сожалению, у вас нет прав доступа к данному боту Ваш ID:' + str(message.chat.id)<code lang="python">
</code>
  • Вопрос задан
  • 240 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Allespro
попробуй так

def start_message(call):
    if call.message.chat.id in objects:
        print("Аутентификация прошла успешно.")
        bot.send_message(call.message.chat.id, 'Вас приветствует Bot!', reply_markup=keyboard)
    elif call.message.chat.id not in objects:
        print("Аутентификация не пройдена.")
        bot.send_message(call.message.chat.id,'К сожалению, у вас нет прав доступа к данному боту Ваш ID:' + str(call.message.chat.id)


Для меня добавление call работало
Ответ написан
@SirotaKazansky
System Analyst
Проблема в типах, if str(message.chat.id)
ну и проверяйте в таких ситуациях type(...чего там не сравнилось...)
у Вас в данном случае class 'int'
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
message.chat.id - число
У вас в сете строки
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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