как убрать сообщение после выхода из цикла while (aiogram)

Рейтинг: 0Ответов: 1Опубликовано: 20.03.2023

введите сюда описание изображениядоброй ночи, помогите пожалуйста с недоработкой. Суть в том, что когда цикл запущен и ты его выключаешь командой стоп, всё окей цикл выключается и его можно запустить повторно, но если цикл не запущен, то тебе всё равно выдаст сообщение "бот остановлен". Надо сделать так, чтобы если цикл выключен и ты пишешь команду стоп, то тебе выдаёт сообщение "с начало запустите цикл бота". Я примерно смог это реализовать, сообщение выдаёться, но вместе со старым сообщение "бот остановлен"

Я думаю надо, как то удалить это сообщение, уже пробовал так сделать,к сожалению не смог правильно сделать синтаксис, поэтому прошу помощи. Я в этой теме 2 дня только сижу, прошу помиловать за какие-то тупые ошибки

Простыми словами, надо избавиться от сообщения "бот остановлен" ПОСЛЕ ЗАВЕРШЕНИЯ ЦИКЛА!!!

код функции:

@dp.message_handler(content_types=['text'])
async def get_user_text(message):
    global stop
    global bot_flag
    if message.text == '/bot':
        bot_flag = True
        if stop == True:
            stop = False
            while stop == False:
                await bot.send_message(message.chat.id,"программировал ли ты сегодня?")
                await asyncio.sleep(1)
                if bot_flag == False:
                    stop = True

        else:
            await bot.send_message(message.chat.id, "Бот уже работает")


    if message.text == '/stop':
        await bot.send_message(message.chat.id, "Бот остановлен")
        bot_flag = False
        if stop == True:
                await bot.send_message(message.chat.id, "С начало запустите цикл бота")

Ответы

▲ 0

Если я вас правильно понял, вам нужно, чтобы вы нажали один раз на /stop, вам бот выдал сообщение, что он остановился и всё
Мне кажется, стоит попробовать добавить ещё одно условие к

if message.text == '/stop':

Вам же нужно, чтобы не просто текст совпадал, но ещё чтобы флаг остановки не был поднят, поэтому стоит немного переписать условие:

elif message.text == '/stop' and stop == True:
   await bot.send_message(message.chat.id, "С начало запустите цикл бота")
else: 
   await bot.send_message(message.chat.id, "Бот остановлен")   

Код не тестировал, но, думаю, это должно подойти