The bot is written in aiogram
I can’t figure out how to make it so that when I start the command, I can restart the code again. To prevent the code from sending user_login and user_password values that are already in it.
I tried through states but it gave an error
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
dp.middleware.setup(LoggingMiddleware())
user_states = {}
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
# dp.message_handlers.clear()
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.add(types.KeyboardButton(text="Да"))
keyboard.add(types.KeyboardButton(text="Нет"))
# Запускаем цикл в асинхронной функции
await message.answer("Привет! Я бот для площадки moodle.")
await message.answer(f"Твой профиль {response.get_profile(user_login, user_password)}?", reply_markup=keyboard)
@dp.message_handler(lambda message: message.text in ['Да', 'Нет'])
async def handle_response(message: types.Message):
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.add(types.KeyboardButton(text="СТОП"))
if message.text == 'Да':
await message.answer("Хорошо, начинаю работу. Если произойдёт ошибка, то нажми кнопку 'СТОП'.", reply_markup=keyboard)
# Запускаем цикл в асинхронной функции
await some_loop(message.chat.id)
if message.text == 'Нет':
await message.answer("Ну нет, так нет.", reply_markup=None)
return
gets = True
@dp.message_handler(lambda message: message.text in ['СТОП'])
async def stop_res(message: types.Message):
# keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
# keyboard.add(types.KeyboardButton(text="СТОП"))
if message.text == "СТОП":
global gets
gets = False
await message.answer("Бот остановлен, нужен перезапуск", reply_markup=None)
return
async def some_loop(chat_id):
global gets
counter = 0
while gets:
counter += 1
# Выводим определенные сообщения
await bot.send_message(chat_id, response.resless())
await asyncio.sleep(10) # Ждем 5 секунд перед отправкой следующего сообщения
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
I tried to solve the problem via chatgpt, but without success.