@ch1ps01

Проблема с циклом, что делать?

@bot.message_handler(func=lambda x:x.text=='Рассылка')
def rassylka(message):
    global admin_id
    if message.from_user.id==admin_id:
        sent = bot.send_message(message.chat.id, 'Введите сообщение для рассылки.')
        bot.register_next_step_handler(sent, hello)

def hello(message):
    message_to_save = message.text
    con = sqlite3.connect('users.db')
    cur = con.cursor()

    cur.execute("SELECT rid FROM users WHERE rid = 1")
    res = cur.fetchall()
    recs = repr(res).count('1') - 1

    if recs >= 0:
        i = 0
        while i <= recs:
            try:
                cur.execute("SELECT id FROM users")
                res = cur.fetchall()[i][0]
                bot.send_message(res, message.text)
                i += 1
            except:
                print(i)
                break
                i+=1
                while i <= recs:
                    cur.execute("SELECT id FROM users")
                    res = cur.fetchall()[i][0]
                    bot.send_message(res, message.text)

Туплю с рассылкой сообщений через бота в тг, библиотека если что телебот. Вкратце объясню, что за шлак в коде и в чём проблема... С базы данных я получаю количество пользователей и если больше или равно 0, то запускается цикл отправки сообщений на айди пользователей, но на случай того, что пользователь заблокировал бота или просто нету возможности отправить сообщение тому пользователь, я добавил исключение, то есть try, если всё хорошо, то просто отправляется, если в отправке сообщения произошла ошибка, то цикл прекращается, к переменной i добавляется 1, что-бы перейти на следующего юзера и должен запустится новый цикл, но не получается
  • Вопрос задан
  • 61 просмотр
Решения вопроса 2
SoreMix
@SoreMix Куратор тега Python
yellow
Как-то замудренно

if recs >= 0:
    cur.execute("SELECT id FROM users")
    res = cur.fetchall()
    for id_ in res:
        try:
            bot.send_message(id_[0], message.text)
        except:
            # ну какая-то обработка
Ответ написан
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
выше указали вариант
а твое творение не работает потому-то break и все что ниже не работает
print(i)
break
i+=1
while i <= recs:
    cur.execute("SELECT id FROM users")
    res = cur.fetchall()[i][0]
    bot.send_message(res, message.text)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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