Ошибка в работе рассылки python

Имеется код рассылки

@dp.callback_query_handler(text="mailing")
@dp.throttled(anti_flood,rate=6)
async def mailing(call: types.CallbackQuery):
    await bot.send_message(call.message.chat.id, f"Введите текст рассылки:\n(Введите 0 для 
отмены.)")
    @dp.message_handler(content_types=["text"])
    async def mailingsend(message: types.Message):
        if message.text == "0":
            pass
        else:
            await bot.send_message(logs, f"Пользователь запускает рассылку!!!\nTG ID: 
{call.message.chat.id}\nUsername: @{call.message.chat.username}\nNickname: 
{call.message.chat.first_name}")
        cursor.execute(f"SELECT chatid FROM users")
        results = cursor.fetchall()
        for result in results:
            true = 0
            false = 0
            try:
                await bot.send_message(result[0], message.text)
                true += 1
            except:
                false += 1
        conn.commit()
        await bot.send_message(message.chat.id, f"Рассылка окончена!\n✅Успешных отправок: {true}\n❌Неудачных отправок: {false}")
        pass

И во время выполнения рассылка проходит. Все получают сообщения, но переменные тру и фолс не принимают значения больше единицы. В следствии чего я получаю сообщение что отправлено 1 сообщение верно и 1 не верно. или просто про 1 верную отправку.

введите сюда описание изображения

В чем проблема? вроде бы я все сделал как нужно, даже в гугле посмотрел работу с переменными.


Ответы (1 шт):

Автор решения: oleksandrigo

Я пропущу ту часть где я с презрением обсуждаю то что вы хендлер внутри хендлера храните и сразу перейду к делу.

Во-первых, почему по вашему тру и фолс вообще должны правильно работать? Они ведь постоянно, каждую итерацию заново объявляются и приравниваются к нулю. Выведите объявление тру и фолса вне for

true = 0
false = 0
for result in results:
    try:
        await bot.send_message(result[0], message.text)
        true += 1
    except:
        false += 1
→ Ссылка