Для реализации поиска айди пользователя по его юзернейму с использованием aiogram, можно воспользоваться методом `get_chat`, который позволяет получить информацию о пользователе по его юзернейму или айди.
Вот пример кода, который выполняет поиск айди пользователя асинхронно:
```python
import asyncio
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
bot = Bot(token='your_token_here')
dp = Dispatcher(bot)
@dp.message_handler(commands=['search_id']) # Слушаем команду /search_id
async def search_id(message: types.Message):
username = message.get_args() # Получаем юзернейм пользователя из аргументов команды
try:
user = await bot.get_chat(username) # Получаем информацию о пользователе
user_id = user.id # Получаем айди пользователя
await message.reply(f"The ID of user {username} is {user_id}") # Отправляем сообщение с айди
except Exception as e:
await message.reply(f"Error: {e}") # Отправляем сообщение об ошибке, если пользователя не найдено
async def on_startup(dp):
await bot.send_message(chat_id='your_chat_id', text='Bot has been started') # Отправляем сообщение о запуске бота
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.create_task(bot.send_message(chat_id='your_chat_id', text='Bot has been started')) # Отправляем сообщение о запуске бота
executor.start_polling(dp, on_startup=on_startup, loop=loop)
```
В данном примере, при получении команды `/search_id <username>`, бот будет искать айди пользователя с указанным юзернеймом и отправлять его в ответном сообщении. Если пользователя не найдено, будет отправлено сообщение с ошибкой.
Этот код уже работает асинхронно, потому что выполнение функций помеченных ключевым словом `async` может быть приостановлено для выполнения других задач, позволяя боту взаимодействовать с другими частями программы параллельно.