Как получить username aiogram
Перейти к содержимому

Как получить username aiogram

  • автор:

Как получить 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 комментария

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

dark_firewall

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

drygdryg

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 @SoreMix Куратор тега Python

На гитхабе aiogram есть ответ в описании

5f707c2d75764816994853.png

Ответ написан более трёх лет назад
Нравится 1 2 комментария
Василий Волк @VovkVasil Автор вопроса

Хых, спасибо за решение. Но я не на гитхабе читал, а вот тут https://docs.aiogram.dev/en/latest/. Понял свою ошибку)

SoreMix

soremix @SoreMix Куратор тега Python

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

spoiler

5f707ea730009923609725.png

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *