qaa-engineer.ru > Вопросы и ответы > Как узнать id пользователя с помощью имени пользователя в телеграм?
В мире программирования все стоит на уровне грамотности кода и алгоритмических подходов. Очень часто возникают ситуации, когда нужно узнать id пользователя в интернет-сервисах. Сегодня рассмотрим варианты, как узнать id пользователя с помощью имени пользователя в Телеграм.
Telegram – это одна из самых популярных мессенджеров в мире. Сегодня большинство людей используют его для обмена сообщениями. Telegram предлагает множество функций, которые сделали его таким популярным – от создания чат-групп до комментариев сообщений.
Как работать с идентификаторами пользователей
Id пользователя используется в Telegram и других приложениях для идентификации пользователей. Они являются цифровыми уникальными идентификаторами, которые позволяют производить манипуляции с пользователями.
Идентификаторы пользователей могут быть получены при помощи специальных API, используя их никнейм, номер телефона, или использовать их устаревшие данные, которые сохранены в телефонной книжке. Если вы используете телефонную книжку, вы можете просмотреть информацию о пользователе, но если вы хотите получить доступ к информации о пользователе, вам необходимо использовать специальное API.
Как создать ЧАТ в ТЕЛЕГРАММ для получения сигналов от бота
Однако, первый вариант для тех, кто не знакомится с кодом, это использовать Ctrl+C + Ctrl+V. Копируйте и вставляйте никнейм пользователя в поисковой строке Telegram. Если пользователь зарегистрирован, его никнейм будет отображаться на экране, а вы можете найти его в списке контактов.
Получение ID пользователя с помощью использования API
Чтобы получить id пользователя в Telegram, вам нужно использовать API бота. API бота позволяет узнавать информацию о пользователях в Telegram. Для получения id пользователя вы можете использовать следующий код в Python:
Получение ID пользователя с помощью использования скрипта
Также вы можете использовать скрипт, который позволяет получить id пользователя с помощью использования его имени пользователя. Скрипт написан на Python и направленный на клиентскую библиотеку telegram. Для работы со скриптом вам нужно будет иметь учетную запись Telegram.
Вам также потребуется установить библиотеку Python, чтобы выполнить этот скрипт.
Следующий код написан на Python и использует Telegram API для получения ID пользователя. Предполагается, что вы используете библиотеки requests и json для обращения к API Telegram.
import requests import json def getUsername(str): response = requests.get(f»https://api.telegram.org/bot123456:bleh/getUpdates») json_data = json.loads(response.text) username = json_data[‘result’][-1][‘message’][‘chat’][‘username’] return username
Собираем базу пользователей (подписчиков) Телеграм бота + мультиязычный интерфейс
Сбор и хранение данных о подписчиках Телеграм бота организовать очень просто. Рассмотрим инструменты для ведения такого рода базы, а также настройки мультиязычности интерфейса бота.
ESP 8266 — Telegramm Bot — Ссылочка на Led, id чат, кнопка, уведомление!
Собрать базу подписчиков бота не сложно, потому что при «старте» бота вместе с запросом приходят нужные данные. Нам необходимо только организовать сбор этих данных. Они нам могу пригодиться, например для хранения настроек пользователя, или при формировании рассылки информационных сообщений. Без самостоятельного ведения базы или использования сторонних ресурсов получить список тех, кто начал диалог с вашим ботом невозможно, то есть Телеграм вам такой информации нигде не выведет, по крайней мере на момент написания статьи, я такого функционала в мессенджере не встречал.
Для примера сделаем возможность пользователю выбирать язык интерфейса (мультиязычность), и соответствующую настройку будем хранить вместе с данными пользователя.
Как организовать сбор данных?
Для начала создадим таблицу users в базе MySQL (используйте кодировку utf8mb4_unicode_ci )
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `telegram_id` bigint(20) DEFAULT NULL, `first_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `last_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `lang` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Класс User по работе с таблицей, к нему мы будем обращаться для создания, получения или обновления данных о пользователях.
Добавим новый метод setPdo в класс по организации соединения с СУБД MySQL, сам класс Db вы можете посмотреть в предыдущей статье «Авторизация на сайт через Телеграм без использования официального виджета», также в прикрепленном к статье файле будут все приведенные скрипты.
else < $set .= «`» . str_replace(«`», ««», $field) . «`» . «=:» . $field . «, «; >> > return substr($set, 0, -2); > ?>
Вынесем все необходимые в рамках этой статьи методы взаимодействия с Telegram Bot API в отдельный класс Bot, не забудьте заменить ___TOKEN__ВАШЕГО__БОТА___ на токен от своего бота. Класс при необходимости можно расширить, а методы дополнить, но это на ваше усмотрение.
Добавляем боту мультиязычность
В качестве примера применения базы пользователей сделаем боту мультиязычный интерфейс, для этого необходимо при старте пользователю выводить возможность выбора языка в случае, если ранее им язык не был выбран. Мультиязычность позволит вам как создателю бота расширить круг пользователей, повысить лояльность и соответственно получить больше клиентов. Класс Lang работает с файлами, которые содержат текстовые данные на разных языках в формате JSON. На сервере сделаем для них отдельную директорию lang и поместим ее в корень. Структура приложения по итогу будет выглядеть так:
Метод getParam() принимает один обязательный параметр и один необязательный. Обязательный параметр — это ключ в массиве данных языкового файла, по нему мы будем получать значение контента. В качестве не обязательного параметра можно передать массив (ключ — значение) для подстановки необходимых нам динамических данных, например имя пользователя:
$this->lang->getParam(«helloText», [ ‘name’ => $this->user->getFullName() ]);
Lang.php
Файлы с контентом ru.json и en.json
ru.json < «error»: «Произошла исключительная ситуация», «helloText»: «Привет мой друг. nТвое имя nn/lang — Сменить настройки языка» > en.json < «error»: «An exceptional situation has occurred», «helloText»: «Hello, my friend. nYour name is nn/lang — Change language» >
Переходим к самому интересному, это класс WebHook. После того как пришел запрос от пользователя мы создаем необходимые объекты и отправляем на проверку языковой настройки. В случае если у пользователя еще не выбран язык (это возможно при первом старте бота) то ему выводится предложение со списком языковых настроек.
Если у него язык уже выбран, то все данные передаются в роутер, и там в зависимости от команды выполняются необходимые действия. В нашем варианте выводится приветствие. Еще есть команда на смену языка /lang при ее выполнении пользователю предлагается список на смену языковой настройки.
Index.php — это файл, на который необходимо настроить вебхук.
После успешной настройки вышеописанного приложения у вас будет основа для разработки мультиязычного приложения на базе Телеграм. Исходный код можно скачать и использовать на свое усмотрение.
Источник: imakebots.ru
Как получить Telegram chat_id для конкретного пользователя?
Как получить пользователя chat_id в Telegram bot API? В документации говорится:
Целое | Уникальный идентификатор получателя сообщения — идентификатор пользователя или группового чата.
Ameer Mousavi 26 Июн 2015 в 20:16
8 ответов
Лучший ответ
Обновления сообщений, которые вы получаете через getUpdates или ваш веб-перехватчик, будут содержать идентификатор чата для конкретного сообщения. Он будет содержаться под ключом message.chat.id .
Кажется, это единственный способ получить идентификатор чата. Поэтому, если вы хотите написать что-то, где бот инициирует разговор, вам, вероятно, придется сохранить идентификатор чата по отношению к пользователю в каком-то хранилище ключей-> значений, таком как MemCache или Redis.
Я считаю, что их документация предлагает нечто подобное здесь, https://core.telegram.org/bots#deep-linking-example. Вы можете использовать внешние ссылки , чтобы начать беседу, не требуя от пользователя ввода сообщения.
Chris Brand 26 Июн 2015 в 20:50
Используя Perl API, вы можете получить это следующим образом: сначала вы отправляете сообщение боту из Telegram, затем запускаете getUpdates, и там должен быть идентификатор чата:
#!/usr/bin/perl use Data::Dumper; use WWW::Telegram::BotAPI; my $TOKEN = ‘blablabla’; my $api = WWW::Telegram::BotAPI->new ( token => $TOKEN ) or die «I can’t connect»; my $out = $api->api_request (‘getUpdates’); warn Dumper($out); my $chat_id = $out->->[0]->->->; print «chat_id=$chat_idn»;
Идентификатор должен быть в chat_id , но это может зависеть от результата, поэтому я также добавил дамп всего результата.
Вы можете установить Perl API со страницы https://github.com/Robertof/perl-www- телеграмма-ботапи. Это зависит от вашей системы, но я легко установил это на моем сервере Linux:
$ sudo cpan WWW::Telegram::BotAPI
Источник: question-it.com