Как получить id пользователя telegram aiogram

Обновлено: 19.05.2024

Для любого бизнеса важно установить канал общения с клиентами. Но сделать это не так просто. Психология людей такова, что они не хотят захламлять память своего смартфона новым фирменным приложением из того места, которое они посетили. Совсем другое дело — чат-бот. Ненавязчивый и дружелюбный. А кроме того — со всеми необходимыми фишками: рекламными акциями, скидками и быстрым заказом. И уведомления в одном единственном удобном мессенджере. Почему бы его не реализовать в своем бизнесе? Тем более, что это не так сложно, как вы думаете.

Сегодня мы поговорим о ботах и их API ( telegram api ) на базе популярного мессенджера Telegram.

Содержание

Telegram Bot API и Telegram API

Все началось с того, что Николай Дуров совместно с командой программистов создал криптографический протокол. Его движок задействовал комбинацию симметричного шифрования AES , протокол Диффи-Хеллмана для обмена ключами шифрования между клиентами и ряд хеш-функций. На основе этого протокола был построен MTProto — механизм, позволяющий пользователям сегодня использовать Telegram-мессенджеры.

На данный момент есть два основных инструмента API, с помощью которых можно задействовать сервисы Telegram — Telegram Bot API и Telegram API . Первый служит для разработки чат-ботов, второй позволяет делать полностью кастомные Telegram-клиенты. Разработчикам также доступна открытая библиотека TDLib (Telegram Database Library), с помощью которой можно создавать свою версию мессенджера с уникальными опциями (как например, Telegram X, построенный именно на TDLib). Telegram Bot API является надстройкой над Telegram API , поэтому пользоваться Bot API можно без знаний о механизме используемого протокола MTProto .

Принцип работы любого бота заключается в том, что он перманентно направляет запросы на сервер и регулярно получает обновления. Получать их можно двумя способами. Во-первых, можно использовать вебхуки, когда сервер делает обратный вызов на указанный URL. А во-вторых, можно просто « забрасывать » запросами Telegram, получая постоянные ответы.

BotFather: быстрый Start

Чтобы приступить к созданию собственного бота, необходимо получить токен для авторизации и подключения через API. Делается это при помощи служебного бота. Введите в поиске Telegram его имя — BotFather. Далее следует выбрать команду /newbot и дать имя боту.

Затем BotFather спросит вас имя, которое обязательно должно заканчиваться на bot , например, shop_serge_bot . Далее для бота будет сгенерирован уникальный токен, который будет выглядеть примерно так — 2093336709:AAGiH64Ec1R8r222sM9IywvlIGFkb7wFqyo .

Всего можно генерировать не более 20 ботов на одного пользователя. Управление ботами также происходит через меню команд служебного бота BotFather. Например, если вам потребуется настроить какой-то из ваших ботов, вы должны перейти по командам / mybots и затем нажать на кнопку Edit Bot . Здесь вы сможете настроить имя — Edit Name и указать описание — Edit Description .

Telegram API боты чаты

В меню настроек BotSettings включается режим встроенных запросов (по умолчанию эта опция отключена). Когда встроенные запросы активированы, пользователи могут вызвать вашего бота, просто введя имя пользователя в поле для ввода текста в любом чате, группе или канале.

Если Telegram использовать в коммерческих целях, чат-бот можно вооружить средствами для приема платежей. Стоит обратить внимание, что сам Telegram не занимается проведением транзакций, он лишь дает возможность подключить услуги длинного списка провайдеров.

В их числе такие платежные системы, как Stripe, YooMoney, Сбербанк, PayMaster, PSB, Tranzzo, Payme, CLICK, LiqPay, Portmone, Paymega, ECOMMPAY и др. Разумеется, чтобы использовать эти платежные системы, нужно быть юридическим лицом.

aiogram — асинхронная библиотека

pip install -U aiogram.

Создаем эхо-бот

Создаем конфигурационный файл config.py и указываем в нем значение, сгенерированное ботом BotFather. Приступаем к написанию кода самого чат-бота.

Для начала импортируем конфигурацию и систему логирования. Затем подключаем все необходимые модули из aiogram . Указываем уровень логирования, а затем инициализируем бота, создав две переменные — Bot и Dispatcher .

Как уже говорилось ранее, обработка событий в Telegram может происходить двумя способами — long polling , когда мы со своей стороны постоянно запрашиваем сервер, а второй вариант — более мощное и быстрое решение вебхук . Реализация long polling на Linux имеет большой минус — бот часто зависает и его приходится постоянно перезапускать.

Telegram API боты чаты

Если вы делаете бота, который работает с деньгами или какой-то конфиденциальной информацией, то параметр skip_updates лучше устанавливать в значение Falsе тогда обработчик не будет пропускать старые события и будет обрабатывать их в любом случае. Если этого не делать, существует вероятность, что какая-нибудь важная транзакция может потеряться и возникнет потенциальная угроза безопасности (или коллизия).

Оформление: кнопки и текст

Telegram API боты чаты

Например, URL button — простая кнопка со ссылкой на какой-то веб-ресурс. Вариант кнопки Callback запрашивает обновление. Она может применяться, скажем, для уведомлений или предупреждений (с окном notification или окном alert ). Кнопка для перехода в режим инлайн может открывать меню для выбора чата.

Другой тип кнопок — клавиатурный. Он дают возможность использовать подсказки бота. Например, они могут содержать наиболее частые запросы, ожидаемые от пользователя ( « как к вам проехать » , « время работы » и т.д.)

Один из примеров такой клавиатуры — бот в кафе для дистанционного принятия заказов:

Telegram API боты чаты

Инструмент для оформления текста выбирается аргументом функции parse_mode .

Используя модуль markdown из aiogram.utils по ходу текста можно менять форматирование. Тип форматирования определяется функцией с дописанной к ней букве h , которая означает поддержку HTML.

Учим бот-модерации

Даем возможность бана в группе

Помимо основного кода нам понадобится сделать файл filters.py , который поместим рядом с главным файлом нашего бота:

В коде бота мы его импортируем:

Также необходимо в конфигурационном файле config.py указать id чата ( GROUP_ID ).

Все пользователи Telegram имеют свой id . Он постоянный, и поэтому по нему можно идентифицировать чаты. Если вдруг вы не знаете id , вы можете воспользоваться ботом @username_to_id_bot , который покажет это значение.

В токене бота первая часть — это его id . Например, токен 110301514:AмHdqTcvCG1vGWDxfyeDfSAs0K5PALDsaw принадлежит боту с id 110301514 . В Bot API перед id супергрупп и каналов добавляется -100 (например, id 1322414430 превращается в -1001322414430 ).

Telegram API боты чаты

Заключение

Более сложные боты обладают искусственным интеллектом и умеют использовать нейронные сети. Возможности таких чат-ботов ограничены только вашей фантазией, но об этом — в следующий раз. А пока посмотрите дополнительное видео по технике создания ботов на JavaScript для Telegram API :

Highload нужны авторы технических текстов. Вы наш человек, если разбираетесь в разработке, знаете языки программирования и умеете просто писать о сложном!
Откликнуться на вакансию можно здесь .

Telegram user ID — это специальный цифровой код, который присваивается каждому при регистрации. Такой идентификатор нужен системе для того, чтобы корректно сохранять данные и связывать их с конкретным пользователем. Иногда возникает острая необходимость узнать свой Telegram user ID или цифровой код канала. В меню мессенджера вы этого не найдете, такая возможность не предусмотрена разработчиками.

Но выяснить это вполне реально с помощью других источников.

Рекомендуем наш Каталог — Телеграм каналы по категориям и странам!

Содержание:

Для чего нужен Telegram user ID

Этот идентификатор может пригодиться в разных ситуациях. Без него просто не обойтись, если вы, например, решили создать группу в Телеграм.

Как только вы это сделаете, сообществу будет присвоен идентификатор. В дальнейшем он понадобится для настройки и нормальной работы чата.

Код Telegram user ID уникален. Для каждого сообщества, которое вы создаете, он свой.

Отсюда следует его основное свойство — идентификация, поскольку двух групп с одним и тем же Telegram ID не может быть.

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

Кстати, если желаемый вами @username занят, а аккаунт, которому он принадлежит на данный момент занят, вы можете связаться с технической поддержкой Telegram на предмет передачи этого юзернейма вам.

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

Все это обосновывает использование системы Telegram User ID. Этот идентификатор не меняется никогда, даже если вы смените имя или, к примеру, описание чата/бота/канала.

Если вы хотите узнать подробнее о том, как создать свой канал и сделать его успешным, читайте наш подробный материал.

Свой Telegram user ID: как узнать

картинка: бот telegram user id

Специальные роботы помогут вам разузнать желаемый идентификатор

Они очень простые и созданы лишь для одной задачи: отсылать вам ваш ID. Чтобы воспользоваться их помощью, делаем так:

  • Копируем название бота и вставляем в строку поиска мессенджера или переходим по прямым ссылкам: @MyTelegramID_bot или @my_id_bot ;

Если у вас возникают трудности с переходом по прямым ссылкам в Телеграм, воспользуйтесь средствами обхода блокировки.

  • Начинаем диалог с ним (нажимаем кнопку start).
  • Бот вышлет Telegram user ID — сочетание цифр и букв.

Как узнать чей-то Telegram user ID

Кажется, с тем, как определить свой идентификатор, мы разобрались. Но это еще не все.

В Телеграм можно найти информацию о user ID вообще любого пользователя.

Расскажем, как это делается. Информацию об Telegram user ID «сливает» бот под названием @userinfobot. Чтобы узнать чей-то идентификатор, выполните следующие действия:

  • В ответ бот отправит информацию о пользователе: имя (то, что указано в полях First и Last name), Telegram user ID и язык.

Бот пришлет интересующую вас информацию, и на данный момент это самый быстрый способ узнать user ID в мессенджере.

id

Для чего нужен telegram user id

Перед тем, как узнать, каким образом можно идентифицировать id в популярном на сегодняшний день приложении, нужно разобраться, что такое telegram id. Для быстрой и налаженной работы сервису необходимо моментально распознавать аккаунты, группы и каналы. Для этого и создан id, который представляет собой набор личных данных пользователя.

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

Для чего нужен

Как узнать id в telegram

Тем не менее, существуют такие ситуации, когда нужно получить данные о Телеграмм id группы, чата или канала. В этом случае на помощь приходят боты. Следует выполнить такой алгоритм действий:

Свой telegram user id

Узнать чей-то telegram user id

Узнать id чата telegram

Программисты, разрабатывающие данную программу, не позаботились о том, чтобы человек смог беспрепятственно узнать id telegram chat. Старая версия системы позволяла пользователям видеть айди сразу в пригласительных письмах от сообществ, но сейчас данная функция удалена.

Узнать id чата telegram можно при помощи старого доброго бота. В поисковую строку нужно ввести @MyTelegramID_bot и начать диалог со слова «пуск» или «старт». В ответ человеку придет цифровая комбинация чата.

Id канала telegram

Также можно найти свой канал в общей базе данных Телеграмма и посмотреть первые цифры url. Это и будет id канала.

Важно. Поменять статус канала на «общедоступный» может только тот человек, который владеет больше, чем пятью ресурсами. В противном случае получить id можно только при помощи специальных ссылок и ботов.

Для начала давайте создадим каталог для бота, организуем там virtual environment (далее venv) и установим библиотеку aiogram.
Проверим, что установлен Python версии 3.7 (если вы знаете, что установлен 3.8 и выше, можете пропустить этот кусок):

О версиях aiogram

В этой главе используется aiogram версии 2.9.2, но перед началом работы рекомендую заглянуть в канал релизов библиотеки и проверить наличие более новой версии. Подойдёт любая более новая, начинающаяся с цифры 2, поскольку в будущем ожидается релиз aiogram 3.0 с заметными изменениями и без обратной совместимости.
Чтобы избежать неприятностей, зафиксируемся на 2.9.2 и далее будем обновляться вручную.

Обратите внимание на префикс "venv" в терминале. Он указывает, что мы находимся в виртуальном окружении с именем "venv". Проверим, что внутри venv вызов команды python указывает на всё тот же Python 3.7:

Последней командой deactivate мы вышли из venv, чтобы он нам не мешал.

Первый бот¶

Давайте создадим файл bot.py с базовым шаблоном бота на aiogram:

Первое, на что нужно обратить внимание: aiogram — асинхронная библиотека, поэтому ваши функции тоже должны быть асинхронными, а перед вызовами методов API нужно ставить ключевое слово await, т.к. эти вызовы возвращают корутины.

Асинхронное программирование в Python

Не стоит пренебрегать официальной документацией!
Прекрасный туториал по asyncio доступен на сайте Python.

Рассмотрим следующий код:

Команда /test2 не работает

Давайте запустим с ним бота:

Функция cmd_test2 не работает, т.к. диспетчер о ней не знает. Исправим эту ошибку и отдельно зарегистрируем функцию:

Обе команды работают

Снова запустим бота:

Обработка ошибок¶

За эти 10 секунд пользователь может успеть заблокировать бота со своей стороны и попытка вызвать метод reply приведёт к появлению исключения BotBlocked . Напишем специальный хэндлер для этого исключения:

Аналогично пишутся обработчики и на другие исключения. Таким образом, если одна и та же непредвиденная ситуация может возникнуть в различных хэндлерах, то можно вынести её обработку в отдельный хэндлер ошибок. Кода будет меньше, а оставшийся станет читабельнее.

У errors_handler есть одна особенность, из-за которой его использование может быть нежелательно. Дело в том, что после срабатывания и завершения хэндлера, управление в исходную функцию не возвращается. Проще говоря, если, например, 57-я итерация цикла из 100 привела к срабатыванию errors_handler, остальные итерации выполнены не будут, как и весь остальной код исходной функции. В этом случае ничего не остаётся, кроме как использовать try..except .

Синтаксический сахар¶

Разница между message.answer() и message.reply()

что значит 'message: types.Message' ?

Python является интерпретируемым языком с сильной, но динамической типизацией, поэтому встроенная проверка типов, как, например, в C++ или Java, отсутствует. Однако начиная с версии 3.5 в языке появилась поддержка подсказок типов, благодаря которой различные чекеры и IDE вроде PyCharm анализируют типы используемых значений и подсказывают программисту, если он передаёт что-то не то. В данном случае подсказка types.Message соообщает PyCharm-у, что переменная message имеет тип Message , описанный в модуле types библиотеки aiogram (см. импорты в начале кода). Благодаря этому IDE может на лету подсказывать атрибуты и функции.

Всё хорошо, но если вдруг вы захотите поделиться с кем-то кодом, то придётся каждый раз помнить об удалении из исходников токена бота, иначе придётся его перевыпускать у @BotFather. Чтобы обезопасить себя, давайте перестанем указывать токен прямо в коде, а вынесем его как переменную окружения.
Замените следующие строчки из начала файла:

Но теперь ваш бот не запустится, т.к. будет сразу завершаться с ошибкой Error: no token provided . Чтобы передать переменную окружения в PyCharm, откройте сверху раздел Run -> Edit Configurations и добавьте в окне Environment Variables переменную с именем BOT_TOKEN и значением токена.

Разница между message.answer() и message.reply()

Запустите снова бота и убедитесь, что он работает. Получившийся код можно смело сохранять в PyCharm в File Templates.

На этом мы закончим знакомство с библиотекой, а в следующих главах рассмотрим другие "фишки" aiogram и Telegram Bot API.

Читайте также: