Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/47: Рейтинг темы: голосов - 47, средняя оценка - 4.89
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138

Авторизация паролем к Телеграм боту

08.07.2021, 19:06. Показов 10445. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю бота для телеграмма, использую node-telegram-bot-api

Бота создал, в консоли здоровается, написать боту могу, чтобы он мне что-то ответил. Сейчас стоит вопрос, как защитить это паролем.

Подскажите, направьте, как это сделать? Пока что просто вопрос о создании функции пароля

P.S. К сожалению код не могу предоставить, ввиду малого опыта. Встречал решения на Python и других языках но JS выбрал, т.к. с ним хоть как-то уже работал и решил развиваться дальше.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.07.2021, 19:06
Ответы с готовыми решениями:

Написать код к телеграм боту
Здравствуйте! Я студент. У меня есть вопросы и варианты ответов. Вот чтобы легче запомнить ответы к вопросам и плюс саморазвитие, буквально...

Подключение базы данных к Телеграм боту
Уже какой день не могу подключить базу данных к своему проекту. Есть ли люди, которые могут помочь с этим вопросом?

Ограничение к телеграм боту на PHP по паролю или id пользователя
Есть бот телеграмм, написанный на PHP и подвязанный вебхуком к сайту с календарем. Бот ежедневно в заданное время отправляет сообщение с...

14
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
08.07.2021, 22:33
А доступ к чему именно должен быть защищено паролем? И где пароль надо будет вводить — в чате?
0
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138
09.07.2021, 18:06  [ТС]
Я представляю себе это так: пользователь знает имя бота, заходит к нему, бот предлагает ввести пароль, да это все в чате происходит(а где еще может быть?). Ввел пароль - добро пожаловать со веми запроектированными функциями, неправильно, попробуйте еще раз, как-то так.
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
11.07.2021, 02:22
Да, ясно.
censured, я это представляю себе следующим образом. В базе данных у нас должна быть таблица, в которой будут храниться пары логин / пароль. Можно взять модель, которая используется для обычной аутентификации на сайте. Только, как я думаю, в поле логин (или email) можно хранить id пользователя в Телеграме. Пусть этот идентификатор и выступает в качестве логина.
Далее, бот реагирует на сообщение, парсит его, выделяя пароль — а дальше осуществляется сценарий аутентификации через сравнение полученного пароля с тем, который хранится в базе.
Затем нужно как-то запомнить, что в данном чате пользователь авторизован. Оказывается, при разработке на основе telegraf.js мы можем использовать сессии. Но в принципе можно завести ещё одну таблицу, в которой хранить идентификаторы чатов и помечать их как проверенные (в соответствующем поле); наши защищённые функции вызывать всякий раз только после обращения к этой таблице.
0
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138
12.07.2021, 11:52  [ТС]
А просто паролем нельзя обойтись? хранится 1-2 пароля для условно разных групп доступа, а логин неважен. Или я слишком просто мыслю?
0
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
12.07.2021, 12:21
Зависит от того, с какой целью вы хотите защитить часть функций, от задумки в целом...
0
411 / 303 / 112
Регистрация: 28.08.2013
Сообщений: 797
12.07.2021, 14:24
censured, Вы можете это сделать, вот только зачем? Пользователь общается с ботом в отдельном (не общем) чате. У каждого чата есть свой уникальный chatId (или chat_id, как правильно пишется не помню, давно писал бота). По этому chatId можно идентифицировать пользователя, хранить о нём данные в БД (если надо), и при запросе определять что ему можно, а что нельзя.
1
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138
13.07.2021, 15:09  [ТС]
Заранее chatid неизвестен и одна из удобных форм мне показалась, когда человек пишет боту, после этого бот спрашивает пароль и разрешает дальше пользоваться функцоналом.

Конечно дальше мысль развивается а как с паролем поступать, он должен протухать или в базе данных чатайди копить тех, кто правильно ввел пароль. Но я пока на первом шаге споткнулся.
0
411 / 303 / 112
Регистрация: 28.08.2013
Сообщений: 797
13.07.2021, 22:46
censured, Прочитайте документацию, причём именно Telegram Bot API, а не telegraf.js. В Telegram, chatId - это обязательный параметр, без которого Telegram не будет знать куда пересылать сообщение (данные). И когда пользователь отправляет первое (и послудующие) сообщение боту, в сообщении уже указан chatId.
0
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138
15.07.2021, 15:35  [ТС]
Я понимаю, что это обязательный параметр.

Вот пример кода:

JavaScript
1
2
3
4
5
6
7
8
9
// Команда эхо "/echo [что-нибудь]" 
bot.onText(/\/echo (.+)/, (msg, match) => {
  // 'msg' это полученное сообщение из телеграмма
  // 'match' это результат выполнения приведенного выше регулярного выражения для текстового содержимого
  // этого сообщения 
  const chatId = msg.chat.id;
  const resp = match[1]; // захватываем "что-нибудь"  
  bot.sendMessage(chatId, resp);//отправляем обратно в чат "что-нибудь" 
});
Это позволяет любому человеку написать боту, если человек имя бота знает. И бот будет отвечать только тому, кто его спросил. То есть, бот узнает как-то чат айди, но я нигде сам не прописываю его жестко в какую-то базу.

Поэтому исходя из таких данных я хотел добавить функцию пароля(или может есть другие удобные способы авторизации) - или для этого все же нужна некая база?
0
411 / 303 / 112
Регистрация: 28.08.2013
Сообщений: 797
15.07.2021, 22:53
Цитата Сообщение от censured Посмотреть сообщение
или для этого все же нужна некая база?
Да. ChatId надо где-то хранить. ChatId есть в каждом сообщении. ChatId является идентификатором чата между ботом и человеком. ChatId можно использовать как идентификатор пользователя (исключение, если пользователь сменил номер телефона).
Пример. Бот предоставляет платные и бесплатные функции. При оплате ChatId заносится в БД и срок действия отплаченного периода. Если пользователь обращается к платной функции, тогда бот ищет в БД ChatId с не истекшим оплаченным периодом. Если есть такой ChatId и у него оплаченный период не завершён, тогда разрешаем использование платного функционала. В противном случае, просит оплату. Для бесплатного функционала хранить в БД ChatId не имеет смысла, разве что для сбора какой-то статистики.
P.S. Я так "прикрутил" к боты PayPal.
0
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138
26.07.2021, 16:36  [ТС]
Вообщем сейчас тогда задача сводится к тому, что нужно хранить чат айди. Только до сих пор не пойму вот каких моментов?

1) Изначально бот не знает о существовании человека, поэтому предполагался пароль, т.е. это будет маячком для заноса айди в базу? Тогда надо будет один раз ввести пароль для сохранения чат айди?

2) Как контролировать список чат айди? Баны пользователей, протухание пароля и прочее.

3) Почему не работоспособен алгоритм, как я сейчас общаюсь? То есть написал, и если правильный пароль - то можно дальше командовать. Спрашиваю, чтобы понять что плохого, чтобы уже убрать эту мысль "простого пути")
0
411 / 303 / 112
Регистрация: 28.08.2013
Сообщений: 797
26.07.2021, 18:07
Цитата Сообщение от censured Посмотреть сообщение
Тогда надо будет один раз ввести пароль для сохранения чат айди?
Нет. ChatID это и есть пароль/id/token ...
Цитата Сообщение от censured Посмотреть сообщение
Как контролировать список чат айди
Пришло сообщение. Ищем в БД ChatID. Далее бот проверяет, даты, статусы, баны, ... И формирует соответствующий ответ.
Цитата Сообщение от censured Посмотреть сообщение
Почему не работоспособен алгоритм
Работоспособный, есть telegraf-session, но это "надстройка" над ChatID. Если хотите можете использовать, но можно написать свой код, который будет работать именно так, как Вам нужно.

Добавлено через 10 минут
И ещё. Пароль не имеет смысла, так как пароль вводит человек, в начале использования бота. Что если введёт пароль и передаст телефон другому человек или просто скажет/напишет пароль другому человеку. А ChatID (по дефолту человеку неизвестен (но узнать можно (но не вставить в клиент ))).
0
6 / 6 / 2
Регистрация: 27.06.2019
Сообщений: 138
26.07.2021, 18:14  [ТС]
Если изначально бот никого не знает, и конечному пользователю нужно уметь добавляться к нему, как это сделать, если чат айди не будет в базе заранее?
0
411 / 303 / 112
Регистрация: 28.08.2013
Сообщений: 797
26.07.2021, 21:19
Добавлено через 15 секунд
censured, Есть в БД есть ChatID с действительным оплаченным периодом (к примеру), тогда этому ChatID разрешено использовать платный и бесплатный функционал.
Если в БД есть ChatID но с не действительным оплаченным периодом или в БД нет такого ChatID, тогда разрешается только бесплатный функционал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.07.2021, 21:19
Помогаю со студенческими работами здесь

Как записать значение в переменную отправив сообщение боту телеграм?
Вот подскажите мне как записать значение в переменную или массив, вот например: $otvet = ""; if (strtolower($message) ==...

Как связаться с API сайта olx.ua или отправлять сообщения из чата сайта телеграм-боту?
Пытаюсь настроить связь Telegram-бота с личной перепиской аккаунта на сайте olx.ua, нигде не смог найти информацию по тому, как пересылать...

Что такое авторизация по номеру телефона? (телеграм)
У телеграма авторизация пользователей происходит по номеру телефона(при отсутствии интернета). 1. Пользователь ввёл номер телефона 2....

Простая авторизация с логином и паролем
Нужно реализовать простую авторизацию с логином и паролем, которую идут в бд и после чего кидают ответ пользователю, не могу догнать как...

Авторизация пользователя с шифрованным паролем (hash random) в приложение
В наличии ДБ СУБД Firebird, в которой присутствует таблица USERS с полями ID (integer not null) – первичный ключ, LOGIN (varchar(32) not...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru