Загрузка...

Script Copying button in Aiogram 2: Simple guide

Thread in Python created by H1NEKY May 1, 2025. 128 views

  1. H1NEKY
    H1NEKY Topic starter May 1, 2025 Banned 3 Jul 17, 2021
    QQ ALL! Если вы так же, как и я, не хотите переходить с aiogram 2 на aiogram 3, то этот гайд для вас.

    Я вам покажу как сделать кнопки для копирования как на скриншоте


    [IMG]


    1. Создаём файл utils,py с содержимым:
    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
    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



    Всем спасибо за прочтение ;) :finger_up:
     
    1. View previous comments (2)
    2. H1NEKY Topic starter
      n1s_01, но штука удобная
    3. n1s_01
      H1NEKY, ааа ну тогда ладно, но все же все равно думаю что бесполезная штука
    4. n1s_01
      H1NEKY, ну бесполезный не твой тутор а сама кнопка
Top
Loading...