Загрузка...

Вспомогалка для разрботки aiogram ботов(под другой фрейм тоже изи дописать)

Тема в разделе Python создана пользователем redeyes 8 фев 2025. 156 просмотров

  1. redeyes
    redeyes Автор темы 8 фев 2025 286 9 дек 2019
    Небольшой класc, который принимает объект события в aiogram и ускоряет темп разработки.

    В общем года 2 назад я его начал делать, по мере надобности добавлял новые переменные.
    Возможно много лишнего для кого то, а для кого то не хватает чего то, измените под себя.
    СКАЧАТЬ(ТЫК)

    ЛИБО ПРЯМ ТУТ
    Код
    from aiogram.types import CallbackQuery, Message


    class GetData:
    def __init__(self, data):
    if isinstance(data, Message):
    self.username = data.from_user.username
    self.user_id = data.from_user.id
    self.chat_id = data.chat.id
    self.name = data.from_user.full_name
    self.message_id = data.message_id
    if data.text is not None:
    self.text = data.text
    elif data.caption is not None:
    self.text = data.caption
    else:
    self.text = ''

    if data.forward_from_chat is not None:
    self.forward_message = data.forward_from_chat
    self.forward_message_chat_id = data.forward_from_chat.id
    self.forward_message_chat_title = data.forward_from_chat.title

    if data.photo != []:
    if data.photo is not None:
    self.photo_id = data.photo[0].file_id
    self.photo = data.photo
    else:
    self.photo_id = None
    else:
    self.photo_id = None


    if data.document != []:
    if data.document is not None:
    self.document_id = data.document.file_id
    self.document = data.document
    else:
    self.document_id = None
    else:
    self.document_id = None


    if data.video != []:
    if data.video is not None:
    self.video_id = data.video.file_id
    self.video = data.video
    else:
    self.video_id = None
    else:
    self.video_id = None


    if data.animation != []:
    if data.animation is not None:
    self.animation_id = data.animation.file_id
    self.animation = data.animation
    else:
    self.animation_id = None
    else:
    self.animation_id = None


    if data.sticker != []:
    if data.sticker is not None:
    self.sticker_id = data.sticker.file_id
    self.sticker = data.sticker
    self.custom_emoji = data.sticker.custom_emoji_id
    else:
    self.sticker_id = None
    else:
    self.sticker_id = None

    if isinstance(data, CallbackQuery):
    self.username = data.from_user.username
    self.user_id = data.from_user.id
    self.chat_id = data.message.chat.id
    self.name = data.from_user.full_name
    self.message_id = data.message.message_id
    self.callback_data = data.data


    ВОТ ПРИМЕР ЕГО ИСПОЛЬЗОВАНИЯ



    Python

    from app.utils import GetData
    from aiogram import types, Bot

    # ПРИМЕР С ВСПОМОГАТЕЛЬНЫМ КЛАССОМ

    async def message_handler(message: types.Message, bot: Bot):
    info = GetData(message)
    await bot.send_message(
    chat_id=info.user_id,
    text=f"USERNAME: {info.username}\n"
    f"USER_ID: {info.user_id}"
    f"CHAT_ID: {info.chat_id}"
    f"FULL NAME: {info.name}",
    )


    async def callback_query_handler(callback_query: types.CallbackQuery, bot: Bot):
    info = GetData(callback_query)
    await bot.send_message(
    chat_id=info.user_id,
    text=f"USERNAME: {info.username}\n"
    f"USER_ID: {info.user_id}"
    f"CHAT_ID: {info.chat_id}"
    f"FULL NAME: {info.name}",
    )


    # ПРИМЕР БЕЗ ВСПОМОГАТЕЛЬНОГО КЛАССА

    async def message_handler(message: types.Message, bot: Bot):
    await bot.send_message(
    chat_id=message.from_user.id,
    text=f"USERNAME: {message.from_user.username}\n"
    f"USER_ID: {message.from_user.id}"
    f"CHAT_ID: {message.chat.id}"
    f"FULL NAME: {message.from_user.full_name}",
    )


    async def callback_query_handler(callback_query: types.CallbackQuery, bot: Bot):
    await bot.send_message(
    chat_id=callback_query.from_user.id,
    text=f"USERNAME: {callback_query.from_user.username}\n"
    f"USER_ID: {callback_query.from_user.id}"
    f"CHAT_ID: {callback_query.message.chat.id}"
    f"FULL NAME: {callback_query.from_user.full_name}",
    )


    # ЭТО ЗАТЯГИВАЕТ,
    # ЧТО ТЕБЕ ДОСТАТОЧНО СМЕНИТЬ MESSAGE НА CALLBACK_QUERY
    # И НЕ ПРИХОДИТСЯ ПИСАТЬ ЛИШНЕГО.



    # РАНЬШЕ ПРИХОДИЛОСЬ ПРОВЕРЯТЬ CAPTION ИЛИ TEXT В СООБЩЕНИИ

    async def message_handler(message: types.Message, bot: Bot):
    await bot.send_message(
    chat_id=message.from_user.id,
    text=message.text if message.text else message.caption,
    )

    # ТЕПЕРЬ GETDATA ЗА ТЕБЯ ПОЙМЕТ ЧТО ТАМ CAPTION ИЛИ TEXT

    async def message_handler(message: types.Message, bot: Bot):
    info = GetData(message)
    await bot.send_message(
    chat_id=info.user_id,
    text=info.text,
    )


    И многие другие задачи можно вывести под капот, чтобы ускорить свой процесс разработки, отталкивайтесь от этого файла.

    Кто то может скажет, что это лишняя хуета, может быть и так для кого-то, но лично мне уже неудобно писать без него.
     
    8 фев 2025 Изменено
  2. Kalipso
    Kalipso 8 фев 2025 530 12 апр 2022
    зачем его куда-то было загружать? мог бы под спойлер её вьебать
     
Top
Загрузка...