ID пользователя по Username?

Каким образом можно получить ID пользователя по юзернейму?

Мне это нужно для применения /ban @User


Ответы (3 шт):

Автор решения: Станислав Енягин

Я использовал библиотеку telethon. Логинитесь https://my.telegram.org/auth, и создаете app. Далее получаете api_id и api_hash. Я оставлю здесь асинхронную функцию для получения юзера:

from telethon import TelegramClient
from telethon.tl.functions.users import GetFullUserRequest
async def get_user(username):
    async with TelegramClient('ваш username', API_ID, API_HASH) as client:
        user = await client(GetFullUserRequest(username))
    return user
→ Ссылка
Автор решения: MyZik

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

@bot.message_handler(commands=["ban"])
async def ban(message: types.Message):
    chat_id = message.chat.id
    
    if message.type not in ("group", "supergroup"):
        # Команда используется не в чате
        return None

    chat_member = await bot.get_chat_member(chat_id, message.from_user.id)
    if not member.can_delete_messages:
        # У пользователя нет прав удалять сообщения
        return None

    if message.reply_to_message is None:
        # Команда используется не ответом на сообщение
        return await message.reply("Эту команду нужно использовать ответом на сообщение...")

    user_id = message.reply_to_message.from_user.id
→ Ссылка
Автор решения: UtileRain 1

Вопрос был решен одним классом

from pyrogram import Client, errors


class UserBot:
    def __init__(self, api_hash, api_id):
        self.client = Client('session', api_id, api_hash)
        self.client.start()

    async def get_user(self, chat_id: int, username: str):
        """
        Converts username to user_id
        :param chat_id: An id of chat in telegram
        :param username: Username
        :return: An ID of user on telegram
        :rtype: int
        """
        try:
            _user = await self.client.get_chat_member(chat_id, username)
        except errors.UserNotParticipant:
            raise ValueError("User does not exist in this chat.")

        return _user.user

    async def get_message(self, chat_id: int, message_id: int):
        """
        Returns a message from telegram by its ID
        :param chat_id: A chat_id of message
        :param message_id: An ID of message
        :return: Message
        """

        return await self.client.get_messages(chat_id, message_id)

user_bot = UserBot(api_hash, api_id)
user = user_bot.get_user(chat_id, "@username")

Конечно не aiogram, а pyrogram, но свою функцию выполняет. Источник: https://github.com/ilyas-kalandar/IntelligentBot/blob/main/userbot/userbot.py

→ Ссылка