QQ ALL! Если вы так же, как и я, не хотите переходить с aiogram 2 на aiogram 3, то этот гайд для вас. Я вам покажу как сделать кнопки для копирования как на скриншоте 1. Создаём файл utils,py с содержимым: from typing import TYPE_CHECKING, Any from aiogram.types.base import TelegramObject class CopyTextButton(TelegramObject): text: str if TYPE_CHECKING: def __init__(__pydantic__self__, *, text: str, **__pydantic_kwargs: Any) -> None: super().__init__(text=text, **__pydantic_kwargs) Python from typing import TYPE_CHECKING, Any from aiogram.types.base import TelegramObject class CopyTextButton(TelegramObject): text: str if TYPE_CHECKING: def __init__(__pydantic__self__, *, text: str, **__pydantic_kwargs: Any) -> None: super().__init__(text=text, **__pydantic_kwargs) Класс CopyTextButton будет использоваться для создания кнопок с функцией копирования текста 2. Импорт и использование в main,py from aiogram import Bot, Dispatcher, executor, types from utils import CopyTextButton # Импортируем CopyTextButton bot = Bot('ТУТ ВАШ ТОКЕН', parse_mode='HTML') dp = Dispatcher(bot) @dp.message_handler(commands=['start']) async def send_contact(message: types.Message): # Создаём текст для копирования phone = CopyTextButton(text="+1234567890") email = CopyTextButton(text="почта@gmail.com") phone_btn = types.InlineKeyboardButton(text="Телефон", copy_text=phone) # Внедряем текст для копирования в инлайн-кнопки email_btn = types.InlineKeyboardButton(text="Email", copy_text=email) # Внедряем текст для копирования в инлайн-кнопки keyboard = types.InlineKeyboardMarkup().add(phone_btn).add(email_btn) await message.answer( text="Тест сообщение", reply_markup=keyboard ) if __name__ == '__main__': executor.start_polling(dp, skip_updates=True) Python from aiogram import Bot, Dispatcher, executor, types from utils import CopyTextButton # Импортируем CopyTextButton bot = Bot('ТУТ ВАШ ТОКЕН', parse_mode='HTML') dp = Dispatcher(bot) @dp.message_handler(commands=['start']) async def send_contact(message: types.Message): # Создаём текст для копирования phone = CopyTextButton(text="+1234567890") email = CopyTextButton(text="почта@gmail.com") phone_btn = types.InlineKeyboardButton(text="Телефон", copy_text=phone) # Внедряем текст для копирования в инлайн-кнопки email_btn = types.InlineKeyboardButton(text="Email", copy_text=email) # Внедряем текст для копирования в инлайн-кнопки keyboard = types.InlineKeyboardMarkup().add(phone_btn).add(email_btn) await message.answer( text="Тест сообщение", reply_markup=keyboard ) if __name__ == '__main__': executor.start_polling(dp, skip_updates=True) phone = CopyTextButton(text="+1234567890") email = CopyTextButton(text="почта@gmail.com") Данные переменные создают объект с текстом для копирования phone_btn = types.InlineKeyboardButton(text="Телефон", copy_text=phone) email_btn = types.InlineKeyboardButton(text="Email", copy_text=email) А уже для инлайн-кнопок мы используем два ключевых параметра: text - видимая надпись на кнопке, которую увидит пользователь copy_text - принимает созданный нами объект CopyTextButton Всем спасибо за прочтение ;)