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

Aiogram – это библиотека Python для создания Telegram ботов. Она предоставляет удобный и мощный интерфейс для взаимодействия с Telegram API. В этой статье мы рассмотрим наиболее распространенные методы, используемые в Aiogram.

Отправка сообщений

Для отправки сообщений в Aiogram используется метод send_message() . Он принимает два обязательных аргумента: идентификатор чата и текст сообщения. Вот пример использования этого метода:

from aiogram import Bot, types bot = Bot(token=’YOUR_API_TOKEN’) async def send_hello_message(chat_id: int): await bot.send_message(chat_id, ‘Привет, мир!’)

Отправка фото

Для отправки фото в Aiogram используется метод send_photo() . Он принимает два обязательных аргумента: идентификатор чата и объект типа InputFile . Вот пример использования этого метода:

from aiogram import Bot, types bot = Bot(token=’YOUR_API_TOKEN’) async def send_hello_photo(chat_id: int): with open(‘hello.jpg’, ‘rb’) as photo: await bot.send_photo(chat_id, photo)

Отправка клавиатуры

Для отправки клавиатуры в Aiogram используется метод send_message() , который может принимать дополнительные параметры для настройки клавиатуры. Например, для отправки простой инлайн-клавиатуры можно использовать следующий код:

Реферальная система для Telegram бота на Python / Aiogram


from aiogram import Bot, types bot = Bot(token=’YOUR_API_TOKEN’) async def send_hello_keyboard(chat_id: int): keyboard = types.InlineKeyboardMarkup() keyboard.add(types.InlineKeyboardButton(text=’Нажми меня’, callback_data=’button_pressed’)) await bot.send_message(chat_id, ‘Привет, мир!’, reply_markup=keyboard)

Получение информации о сообщении

Для получения информации о сообщении в Aiogram используется объект типа Message . Он может содержать различную информацию о сообщении, например, текст, идентификатор чата и т.д. Вот пример использования этого объекта:

from aiogram import Bot, types bot = Bot(token=’YOUR_API_TOKEN’) async def process_message(message: types.Message): chat_id = message.chat.id text = message.text await bot.send_message(chat_id, f’Вы написали: ‘)

Заключение

В этой статье мы рассмотрели наиболее распространенные методы, используемые в Aiogram. Надеюсь, эта информация была полезной для вас и поможет вам начать создание своих первых ботов с помощью Aiogram. Если у вас есть какие-либо вопросы или замечания, пожалуйста, не стесняйтесь обращаться к нам.

Источник: aiogram.ru

  • Вопрос задан 17 дек. 2022
  • 591 просмотр

Комментировать
Решения вопроса 0
Ответы на вопрос 1

gnifajio

Совершенствуюсь каждый день

Чтобы получить id пользователя через упоминание в Telegram с помощью aiogram, вам нужно будет сначала извлечь упоминание из сообщения, а затем использовать метод resolve_peer клиента для получения id пользователя.

Вот пример того, как это можно сделать:

#16. Регистрация пользователей в телеграм боте на Python | Aiogram

Код написан довольно костыльно, не могу не согласится, но для примера сгодится.

Ответ написан 21 дек. 2022

user_id = await bot.resolve_peer(mention.group(1)) ^^^^^^^^^^^^^^^^ AttributeError: ‘Bot’ object has no attribute ‘resolve_peer’

Какую версию aiogram вы используете?

gnifajio

Uni0005, забыл упомянуть, что resolve_peer нет в aiogram, для получения этой функции нужно использовать pyrogram. Но вы можете сохранять username пользователя в базу данных вместе с id, и при надобности извлекать эти значения.

Источник: qna.habr.com

Aiogram сообщение по id

Chat-клиент, chat-сервер
Доброго времени суток. Задача — написать чат-сервер и чат-клиент на сокетах. Клиент и сервер.

Еще по теме:  Где лежат гифки Телеграмма

Решение

Как в aiogram сохранить данные для нулевого состояния FSM?
Здравствуйте. Возник вопрос, как сохранять пользовательские данные в машине состояний при нулевом.

Как к инлайн кнопке Python telegram bot на aiogram сделать выполнение функции другого кода
Я нашел простой пример парсера(код и результат на картинке) и у меня вопрос, как сделать так, что.

Где можно найти статью как написать PHP-CHAT на IRCe?
Привет! Кто нить знает где можно найти статью как написать PHP-CHAT на IRCe.Если конечно такое.

Webhooks aiogram
Пожалуйста помогите разобраться с установкой вебхуков для aiogram. Взял этот пример import.

Нужно получить id пользователя, который использует бота. Как можно это сделать в aiogram?

1 ответ 1

введите сюда описание изображения

Всё ещё ищете ответ? Посмотрите другие вопросы с метками python telegram-bot aiogram или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

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

Если вы собираетесь работать с отправкой эмоджи, и делать это не по их коду, например ‘U0001F31A’ , а пользоваться наглядными названиями как :new_moon_with_face: , то необходимо установить библиотеку emoji , для этого воспользуемся командой pip install emoji (или командой python3.6 -m pip install emoji , если у вас установлено несколько интерпретаторов питона).

Зачем хранить айди файлов, которые мы отправляем?

Наконец-то код!

Для начала создаем модель таблицы для нашей базы данных. Файл db_map.py:

Теперь загружаем в Телеграм файлы и сохраняем возвращаемые айди в базу данных. Для этого я написал небольшой скрипт, который доступен по ссылке. Если будете исполнять его на своём компьютере, можете обратить внимание на то самое логирование библиотеки aiogram.

Вот результат выполнения скрипта:

Представим, что в базе данных было ещё несколько полей, по которым вы в коде будете получать необходимые данные. Теперь переходим к основному коду бота. Так как создание логики запросов к БД — не тема этих уроков, допустим, что вы получили данные при старте программы и записали их в переменные (строки кода 17 — 26).

Создаем хэндлер команд /start и /help :

Обращу внимание читателя на то, что в ответе на команду /help мы воспользовались новыми методами: text и bold . Эти на первый взгляд простые функции сильно упрощают работу с генерацией текста. Первая склеивает в одно целое все передаваемые ей строчки, перемежая сепаратором (по умолчанию пробел, в таких случаях переменную sep вообще не нужно указывать), а вторая обрамляет входящую строчку метками для жирного текста (в данном примере используется разметка Markdown, поэтому это символы * . Для HTML теги будут другие). По аналогии работают методы italic , code и pre для Markdown и аналогичные для HTML. А чтобы Телеграм понял, что эти символы здесь не просто так, но обозначают разметку, мы явно указываем тип этой самой разметки: parse_mode=ParseMode.MARKDOWN . Напомню, что все необходимые импорты можно посмотреть по ссылке.

Затем добавляем обработчики всех остальных команд

О каждой по отдельности (за одно разберем эмоджи):

Отправка фото с комментарием + эмоджи:

Еще по теме:  Скачать Телеграмм бесплатно на Айфон без app store

Тут мы дополнительно передаем данные в параметр caption , предварительно преобразовав текст, чтобы получить эмоджи из его кода. Теперь от простого переходим к более сложному.

Отправка медиагруппы (где смешались кони, люди фото и видео):

Итак, что же произошло в коде? Для начала создаем массив и кладем в него один элемент типа InputMediaVideo . Первый входной параметр — само видео (в данном случае айди), а второй элемент — caption (его передавать не обязательно). Дальше в цикле заполняем массив элементами типа InputMediaPhoto . Их создаем без подписи, тем самым делаем так, что всей медиагруппе принадлежит комментарий, оставленный к первому медиа. Затем просто в нужный метод передаем массив элементов. Можно, конечно, ещё было передать сразу медиагруппу, сделав MediaGroup(media) , но так как библиотека делает это сама, то какой смысл писать лишний код и делать лишний импорт?

Отправка видеозаметки (видео в кружочке):

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

Так как разметка тут немного шалит, приложу ещё и скриншот кода с более понятной подсветкой синтаксиса: Тут мы отправляем преформатированный текст. Обычно такая разметка необходима при отправке блоков кода. По сути, это тот же моноширинный шрифт как и при использовании code (рассмотрим его ниже), однако pre работает для многострочных вставок и автоматически отделяется переносом строки до и после. В качестве примера отправим данную же функцию с её хэндлером. Получаем такой результат:

Ну и напоследок немного улучшим знания, полученные в предыдущем уроке и закрепим их на деле:

Домашнее задание

В качестве домашнего задания предлагаю вам поэкспериментировать и выполнить следующие действия:

help! я создал 20 deep_link’ов, а потом не нашел функции их удаления! Как от них избавиться?

Можете пж подсказать как из любого текста выбрать только числа? Тип у меня есть:. [(99999,)] Нужно число 99999

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

с компа видое в норм разрешении, а с телефона жмых. Отправляю байтами. С чем может быть связано?

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

Для начала давайте создадим каталог для бота, организуем там 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 может на лету подсказывать атрибуты и функции.

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

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

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

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

  • Сообщение о музее современного искусства
  • Сообщение о бытовой одежде
  • Сообщение о видном деятеле ссср в годы оттепели или развитого социализма
  • Сообщение о художнике ссср кратко
  • Роботы 3 поколения сообщение

Источник: obrazovanie-gid.ru

Рейтинг
( Пока оценок нет )
Загрузка ...