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