Ошибка в работе рассылки 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
