Как сделать авторизацию в Телеграмм боте по идентификатору (python)?
Доброго времени суток, господа! Сразу к сути дела:
Создал телеграмм бота, поженил его с SQLite, все хорошо. (если это важно)
Теперь нужно сделать так, чтобы могли подписаться на этого бота только те пользователи, которым я дам идентификатор. т.е. "левый" юзер не сможет просматривать содержимое этого бота, а так же подписаться на его рассылку.
Конкретизирую вопрос:
Еть телеграм бот (Далее - ТБ), которого я поженил с Базой данных SQLite(Далее - БД).
В БД есть таблица subscriptions со столбцами (user, user_id, status, key)
user - имя пользователя
user_id - ID пользователя в телеграмм
status - подписан / не подписан
key - уникальный ключ пользователя, который я присваиваю самостоятельно
При первом входе в ТБ пользователя ему выдается сообщение: "Введите ключ"
и как только пользователь вводит правильный ключ - он может пользоваться функциями бота. В противном случае выдается сообщение, что ключ не правильный.
Как я это понимаю:
Бот спрашивает ключ, далее пользователь его вводит.
Бот сопоставляет столбцы в таблице user_id и key и если они совпадают с тем что ввел пользователь, то добро пожаловать..
evgeniy1215, ну а чего ты хотел? Чтобы код написал кто-то для тебя?
Вот если бы ты приложил свою попытку решить задачу, показал бы, что не получается, то шанс, что кто-то помог бы, был бы существенно выше.
Алан Гибизов, Хотел чтобы наставили на путь истинный. Дабы я не курил мануалы.. А код показать не могу, потому что его нет. Собственно это и есть основная причина.. с чего начать .. ну как-то так ))
evgeniy1215, так брачный союз бота и sqlite есть или нет?
Так-то нужно просто где-то хранить список id пользователей, которым "можно", и реализовать механизм попадания пользователей в этот список (например, пользователь подписывается на бота, бот говорит ему id, пользователь сообщает id владельцу бота, тот вносит его в список).
Решение:
Структура базы:
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