Как получить id юзера aiogram
Нужно получить id пользователя, который использует бота. Как можно это сделать в aiogram?
Отслеживать
задан 27 фев 2021 в 17:16
videxerion videxerion
1,343 1 1 золотой знак 8 8 серебряных знаков 25 25 бронзовых знаков
message.from_user.id
27 фев 2021 в 17:51
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Получение ID юзера осуществляется с помощью message.from_user.id. Для того чтобы получить любую информацию о сообщении нужно «обращаться» в message, там вы много информации о самом сообщении — от кого, во сколько и т.д.. Я реализовал небольшой пример который выводит ID пользователя в ответном сообщении, или же после нажатии на Inline кнопку
import logging from aiogram import Bot, Dispatcher, executor, types logging.basicConfig(level=logging.INFO) bot = Bot(token = "BOT TOKEN HERE") dp = Dispatcher(bot) @dp.message_handler(commands=['start']) async def alarm(message: types.Message): keyboard_markup = types.InlineKeyboardMarkup() user_id_btn = types.InlineKeyboardButton('Получить ID пользывателя из Inline кнопки', callback_data= 'user_id') keyboard_markup.row(user_id_btn) await message.answer(f"Ваш ID: ", reply_markup=keyboard_markup) @dp.callback_query_handler(text='user_id') async def user_id_inline_callback(callback_query: types.CallbackQuery): await callback_query.answer(f"Ваш ID: ", True) if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)
Как узнать username aiogram? Полезный гайд для начинающих
После выполнения вышеуказанных шагов, вы получите username вашего бота aiogram.
Детальный ответ
Как узнать username в aiogram
aiogram — это фреймворк для разработки Telegram-ботов на языке Python. Для того, чтобы узнать username пользователя в aiogram, есть несколько способов.
1. Через объект Update
В aiogram каждое входящее сообщение представлено объектом Update. Чтобы получить username пользователя, можно воспользоваться объектом Message, который содержится в объекте Update. Вот пример кода:
from aiogram import types async def handle_message(message: types.Message): username = message.from_user.username print(username)
2. Через объект User
В aiogram есть класс User, который содержит информацию о пользователе. Чтобы получить username пользователя, можно воспользоваться атрибутом username объекта User. Вот пример кода:
from aiogram import types async def handle_message(message: types.Message): user = message.from_user username = user.username print(username)
3. Через объект Chat
Объект Chat также содержит информацию о пользователе. Для получения username пользователя можно воспользоваться атрибутом username объекта Chat. Вот пример кода:
from aiogram import types async def handle_message(message: types.Message): chat = message.chat username = chat.username print(username)
Во всех трех случаях, после получения username, вы можете использовать его для дальнейшей обработки сообщения от пользователя.
Это было краткое объяснение того, как узнать username в aiogram. Вы можете выбрать любой из трех способов, который соответствует вашим потребностям и предпочтениям в разработке Telegram-ботов.
Как получить айди пользователя по его юзернейму в Aiogram?
Бан по айди реализовать было довольно легко, но постоянно его получать неудобно, и хочется, чтобы команда работала и с юзернеймом.
Но для бана пользователя нужен его айди, а не юзер.
Как получить айди пользователя, зная только его юзернейм, при условии, что пользователь ничего не писал боту и без баз данных?
- Вопрос задан более года назад
- 1819 просмотров
2 комментария
Простой 2 комментария
Как получить айди пользователя, зная только его юзернейм, при условии, что пользователь ничего не писал боту и без баз данных?

Keith Griffon @dark_firewall
Есть другой выход, получение id того на кого кинул ответ
@dp.message_handler(commands="get_id") async def get_id(msg:types.Message): user_id=msg.reply_to_message.from_user.id await msg.answer(user_id)
Решения вопроса 1

Python-разработчик
Telegram Bot API, на который опирается aiogram, не позволяет сделать это. Но для этого можно использовать Telegram MTProto API. Для работы с MTProto API из Python существуют такие популярные библиотеки, как Telethon и Pyrogram.
Чтобы авторизоваться в Телеграме через MTProto API, помимо токена бота понадобится зарегистрировать своё приложение на https://my.telegram.org/apps и получить API ID и hash. Авторизация с аккаунтом бота в Pyrogram описана здесь. Пример функции, которая превращает имя пользователя в ID:
from pyrogram import Client from pyrogram.raw.functions.contacts import ResolveUsername BOT_TOKEN = "" pyrogram_client = Client( "bot", api_id=6, api_hash="eb06d4abfb49dc3eeb1aeb98ae0f581e", bot_token=BOT_TOKEN, app_version="7.7.2", device_model="Lenovo Z6 Lite", system_version="11 R" ) def resolve_username_to_user_id(username: str) -> int | None: with pyrogram_client: r = pyrogram_client.invoke(ResolveUsername(username=username)) if r.users: return r.users[0].id return None print(resolve_username_to_user_id("Tishka17"))
Обратите внимание, что этот код будет работать только с пользователями (не работает с чатами и с каналами). Чтобы сделать то же самое для чата или канала:
def resolve_username_to_channel_id(username: str) -> int | None: with pyrogram_client: r = pyrogram_client.invoke(ResolveUsername(username=username)) if r.chats: return r.chats[0].id return None
Как получить username бота или пользователя используя aiogram?
(Все импорты есть)
Вывод: None
Зарянее извиняюсь за глупый вопрос. Я искал в библиотеке aiogram’a, то что бы мне помогло но так и не нашел.
и используя
name = User.full_name
Получал в конце «property object at 0x0322E780» или подобные результаты
Спасибо за помощь)
- Вопрос задан более трёх лет назад
- 14073 просмотра
Комментировать
Решения вопроса 1

soremix @SoreMix Куратор тега Python
На гитхабе aiogram есть ответ в описании

Ответ написан более трёх лет назад
Нравится 1 2 комментария
Василий Волк @VovkVasil Автор вопроса
Хых, спасибо за решение. Но я не на гитхабе читал, а вот тут https://docs.aiogram.dev/en/latest/. Понял свою ошибку)

soremix @SoreMix Куратор тега Python
VovkVasil, по сути, все подобное — это просто библиотеки-обертки для уже существующих API. Ну и авторы в принципе не меняют какие-то базовые вещи, делая как можно похоже на оригинальный API. Класс Message представляет те же самые поля, которые и имеются в оригинале
spoiler

Так что, банальное
message.from_user.first_name
будет работать