Загрузка...

Auxiliary for the development of Aiogram bots (under another framework or add)

Thread in Python created by redeyes Feb 8, 2025. 153 views

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

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

    ЛИБО ПРЯМ ТУТ
    Code
    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,
    )


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

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