@evgeniy1215

Как сделать авторизацию в Телеграмм боте по идентификатору (python)?

Доброго времени суток, господа! Сразу к сути дела:

Создал телеграмм бота, поженил его с SQLite, все хорошо. (если это важно)

Теперь нужно сделать так, чтобы могли подписаться на этого бота только те пользователи, которым я дам идентификатор. т.е. "левый" юзер не сможет просматривать содержимое этого бота, а так же подписаться на его рассылку.

Конкретизирую вопрос:

Еть телеграм бот (Далее - ТБ), которого я поженил с Базой данных SQLite(Далее - БД).

В БД есть таблица subscriptions со столбцами (user, user_id, status, key)
user - имя пользователя
user_id - ID пользователя в телеграмм
status - подписан / не подписан
key - уникальный ключ пользователя, который я присваиваю самостоятельно

При первом входе в ТБ пользователя ему выдается сообщение: "Введите ключ"
и как только пользователь вводит правильный ключ - он может пользоваться функциями бота. В противном случае выдается сообщение, что ключ не правильный.

Как я это понимаю:

Бот спрашивает ключ, далее пользователь его вводит.
Бот сопоставляет столбцы в таблице user_id и key и если они совпадают с тем что ввел пользователь, то добро пожаловать..

Заранее спасибо.
  • Вопрос задан
  • 88 просмотров
Пригласить эксперта
Ответы на вопрос 1
@evgeniy1215 Автор вопроса
Решение:
Структура базы:
CREATE TABLE IF NOT EXISTS bot_data
(user_id INT PRIMARY KEY NOT NULL,
domain CHAR(64),
name CHAR(64),
last_req TIMESTAMP,
blocked BOOLEAN NOT NULL DEFAULT FALSE,
admin BOOLEAN NOT NULL DEFAULT FALSE,
in_chats int [] NOT NULL DEFAULT array[]::int[],
pm_started BOOLEAN NOT NULL DEFAULT FALSE);

Проверка на блокировку
def isUserBanned(self, id):
cur = self.con.cursor()
cur.execute("""
SELECT
blocked
FROM
bot_data
WHERE
user_id = %(id)s
""", {
'id': id
})
row = cur.fetchone()
row = list(row)
if row[0] == True:
return True
else:
return False
Ответ написан
Ваш ответ на вопрос

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

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