Задать вопрос
@sXfTeR

Как сделать рассылку в телеграм боте?

Суть вопроса.. Как сделать или можно ли это вообще сделать’ Рассылку определенному пользователю или пользователям к примеру (1, 2, 3) людям ? Код Aiogram для рассылки всем пользователям которые есть в БД:

@dp.message_handler(content_types=['text'], text='Рассылка')
async def spam(message: Message):
    if message.from_user.id == ADMIN:
        await admin.send.set()
        await message.answer('Напиши текст рассылки')
    else:
        await message.answer('Вы не являетесь админом')


@dp.message_handler(state=admin.send)
async def start_spam(message: Message, state: FSMContext):
    if message.text == 'Назад':
        await message.answer('Главное меню')
        await state.finish()
    else:
        cur = conn.cursor()
        cur.execute(f'''SELECT user_id FROM users''')
        spam_base = cur.fetchall()
        print(spam_base)
        for z in range(len(spam_base)):
            print(spam_base[z][0])
        for z in range(len(spam_base)):
            await bot.send_message(spam_base[z][0], message.text)
        await message.answer('Рассылка завершена')
        await state.finish()


Буду благодарен за ответ.
  • Вопрос задан
  • 1122 просмотра
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@IKIQ
Боты писать могут только тем людям, которые писали боту
Ответ написан
@Redeve
Веб-макаке не хватит и 640гБ
сделать’ Рассылку определенному пользователю или пользователям к примеру (1, 2, 3)

Можно добавить еще одно состояние в admin.select_receivers, а после получения текста рассылки уточнять кому его рассылать. И в зависимости от этого брать из таблицы нужное кол-во данных.

for z in range(len(spam_base)):
    await bot.send_message(spam_base[z][0], message.text)

- без сна\кулдауна очень быстро получите FloodWaitError если получателей будет больше 20-30
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы