Загрузка...

[Aiogram] Catch the script of the perfect mailing

Thread in Python created by K1p1k Mar 5, 2025. 311 views

  1. K1p1k
    K1p1k Topic starter Mar 5, 2025 23 Jul 1, 2022
    Python
    from core.routers import admin_router
    from core.loader import dp, bot
    from aiogram import types, F
    from keyboards import admin as kadmin
    from keyboards import user as kuser
    from data import db
    from aiogram.fsm.context import FSMContext
    from aiogram.fsm.state import State, StatesGroup
    import validators
    from utils.filters import Moderation as

    class mailing_state(StatesGroup):
    message=State()
    add_btn=State()


    @admin_router.callback_query(F.data == 'mailing_start')
    async def milling_start(call: types.CallbackQuery, state: FSMContext):
    await state.set_state(mailing_state.message)
    msg=await call.message.edit_text('<b> Отправь сообщение которое придет всем пользователем\n Подержка: HTML(текст), ФОТО, GIF, ДОКУМЕНТОВ, ВИДЕО, АУДИО</b>', reply_markup=await kadmin.get_mailing())
    await state.update_data(msg_id=msg.message_id, kb_list=list())

    @admin_router.callback_query(mailing_state.message, F.data == 'mailing_add_button_admin')
    async def add_button_mailing(call: types.CallbackQuery, state: FSMContext):
    await state.set_state(mailing_state.add_btn)
    await call.message.edit_text(text='<b>⏹ Отправь кнопку в таком формат:</b> <code>[текст](url)</code>\n<b> Каждая кнопка с новой строки</b>', reply_markup=await kuser.cancle_state())


    @admin_router.message(mailing_state.add_btn)
    async def get_mailing_btn(message: types.Message, state: FSMContext):
    await message.delete()
    data=await state.update_data()
    data_text=message.text.split('\n')
    list_kb=data['kb_list']
    try:
    for i in data_text:
    i_append=list()
    for i in i.split(' '):
    h=']('
    i_data=i.split(h)
    text=i_data[0][1:]
    url=i_data[1][:-1]
    is_valid = validators.url(url)
    if is_valid:
    i_append.append(types.InlineKeyboardButton(text=text, url=url))
    list_kb.append(i_append)
    except:
    await state.set_state(mailing_state.message)
    try:
    await bot.edit_message_text(chat_id=message.from_user.id, message_id=data['msg_id'], text=f'<b>❌ Ошибка добавление кнопок\n Отправь сообщение которое придет всем пользователем\n Подержка: HTML(текст), ФОТО, GIF, ДОКУМЕНТОВ, ВИДЕО, АУДИО\n\n</b>', reply_markup=await kuser.get_mailing(more_kb=list_kb))
    except:
    pass
    return
    await state.update_data(kb_list=list_kb)
    await state.set_state(mailing_state.message)
    await bot.edit_message_text(chat_id=message.from_user.id, message_id=data['msg_id'], text=f'<b> Отправь сообщение которое придет всем пользователем\n Подержка: HTML(текст), ФОТО, GIF, ДОКУМЕНТОВ, ВИДЕО, АУДИО\n\n</b>', reply_markup=await kadmin.get_mailing(more_kb=list_kb))

    @admin_router.message(mailing_state.message, F.content_type.in_({types.ContentType.TEXT, types.ContentType.PHOTO, types.ContentType.ANIMATION, types.ContentType.DOCUMENT, types.ContentType.VIDEO, types.ContentType.AUDIO, types.ContentType.VOICE}))
    async def get_milling_message(message: types.Message, state: FSMContext):
    data=await state.update_data()
    inline_kb_list=types.InlineKeyboardMarkup(inline_keyboard=data['kb_list'])
    async def TEXT_send(chat_id):
    await bot.send_message(chat_id=chat_id, text=message.text, parse_mode="HTML", reply_markup=inline_kb_list)

    async def PHOTO_send(chat_id):
    await bot.send_photo(chat_id=chat_id, photo=message.photo[-1].file_id, caption=message.caption, parse_mode="HTML", reply_markup=inline_kb_list)

    async def ANIMATION_send(chat_id):
    await bot.send_animation(chat_id=chat_id, animation=message.animation.file_id, caption=message.caption, parse_mode="HTML", reply_markup=inline_kb_list)

    async def DOCUMENT_send(chat_id):
    await bot.send_document(chat_id=chat_id, document=message.document.file_id, caption=message.caption, parse_mode="HTML", reply_markup=inline_kb_list)

    async def VIDEO_send(chat_id):
    await bot.send_video(chat_id=chat_id, video=message.video.file_id, caption=message.caption, parse_mode="HTML", reply_markup=inline_kb_list)

    async def AUDIO_send(chat_id):
    await bot.send_voice(chat_id=chat_id, voice=message.audio.file_id, caption=message.caption, parse_mode="HTML", reply_markup=inline_kb_list)

    async def VOICE_send(chat_id):
    await bot.send_voice(chat_id=chat_id, voice=message.voice.file_id, caption=message.caption, parse_mode="HTML", reply_markup=inline_kb_list)

    content_case={
    types.ContentType.TEXT : TEXT_send,
    types.ContentType.PHOTO : PHOTO_send,
    types.ContentType.ANIMATION : ANIMATION_send,
    types.ContentType.DOCUMENT : DOCUMENT_send,
    types.ContentType.VIDEO : VIDEO_send,
    types.ContentType.AUDIO : AUDIO_send,
    types.ContentType.VOICE : VOICE_send
    }

    for i in await db.get_allusers():
    await content_case[message.content_type](chat_id=i[0])

    #


    Python
    async def get_mailing(more_kb=list()):

    inline_kb_list = [

    [InlineKeyboardButton(text="⏹ Добавить кнопку(url)", callback_data='mailing_add_button_admin')],

    [InlineKeyboardButton(text=" Отмена", callback_data='user_cancle')]

    ]

    for i in more_kb:

    inline_kb_list.append(i)

    return InlineKeyboardMarkup(inline_keyboard=inline_kb_list)
     
  2. InfernLife
    InfernLife Mar 5, 2025 Купить домен анонимно - t.me/FastDomainBot 839 May 8, 2023
    не идеально
    The post was merged to previous Mar 5, 2025
    нужно если отправляешь форматированный текст, рассылал форматированный, без html разметки
     
  3. Кассандра
    а copy_to почему бы просто не использовать?
     
    1. View previous comments (4)
    2. Кассандра
      K1p1k, [IMG]
      кнопки тоже добавить можно
    3. K1p1k Topic starter
    4. Кассандра
      K1p1k, [IMG]кнопки добавляются у копи, всё работает
  4. K1p1k
    K1p1k Topic starter Mar 5, 2025 23 Jul 1, 2022
    Я вам слил рассылку которую добавить в вашего бота как нечего сделать без copy вы еще его защищайте, для каждого типа расписал send
    The post was merged to previous Mar 5, 2025
    И кнопки можно добавлять как хочешь типо markdown
     
  5. ЛевыйТип
    Он у тя флуд словит и все, тут же нет обработок ошибок

    Для максимальной эффективности надо рассылать несколькими методами ( если текст то send, copy и forward)
     
    1. K1p1k Topic starter
    2. K1p1k Topic starter
      ЛевыйТип, Флуд на скок я знаю "включаеться" когда спамишь одному пользователю
  6. getlife
    getlife Mar 5, 2025 Banned 123 Feb 19, 2025
     
  7. nichind
    nichind Mar 5, 2025 запрет, закон, поправка, критерий, уголовка, привлечение, донос 7779 Sep 15, 2020
    мне бы такой уверенности чтобы к такому файлу в тайтл ставить идеальный
     
  8. derkown
    ну и хуйня
     
Top
Loading...