M
M
manmai2020-07-11 19:51:43
Python
manmai, 2020-07-11 19:51:43

Unable to create authorization by chat.id user in Telegram bot Python. What is the problem?

There is a need to provide bot functionality only to certain users by their id.
I created the objects variable in which I registered valid user id's, but I ran into a problem, the bot refuses to check message.chat.id with the values ​​in the variable. Why?

# -*- 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>

Answer the question

In order to leave comments, you need to log in

3 answer(s)
A
Allespro, 2020-07-11
@Allespro

try like this

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)

For me adding call worked

S
SirotaKazansky, 2020-07-11
@SirotaKazansky

The problem is in the types, if str(message.chat.id)
well, check in such situations type(... what was not compared there...)
in this case you have class 'int'

S
soremix, 2020-07-11
@SoreMix

message.chat.id - number
You have strings in your set

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question