Загрузка...

[Aiogram]ловите скрипт идеальной рассылки

Тема в разделе Python создана пользователем K1p1k 5 мар 2025. 305 просмотров

  1. K1p1k
    K1p1k Автор темы 5 мар 2025 23 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)
     
    5 мар 2025 Изменено
  2. InfernLife
    InfernLife 5 мар 2025 Купить домен анонимно - t.me/FastDomainBot 836 8 май 2023
    не идеально
    --- Сообщение объединено с предыдущим 5 мар 2025
    нужно если отправляешь форматированный текст, рассылал форматированный, без html разметки
     
  3. Кассандра
    а copy_to почему бы просто не использовать?
     
    1. Посмотреть предыдущие комментарии (4)
    2. Кассандра
      K1p1k, [IMG]
      кнопки тоже добавить можно
    3. K1p1k Автор темы
    4. Кассандра
      K1p1k, [IMG]кнопки добавляются у копи, всё работает
  4. K1p1k
    K1p1k Автор темы 5 мар 2025 23 1 июл 2022
    Я вам слил рассылку которую добавить в вашего бота как нечего сделать без copy вы еще его защищайте, для каждого типа расписал send
    --- Сообщение объединено с предыдущим 5 мар 2025
    И кнопки можно добавлять как хочешь типо markdown
     
    5 мар 2025 Изменено
  5. ЛевыйТип
    Он у тя флуд словит и все, тут же нет обработок ошибок

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