Как сбросить состояние бота в айограмме?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сбросить состояние бота в айограмме?

Сообщение Anonymous »

Бот написан на айограмме
Не могу понять, как сделать так, чтобы при запуске команды можно было заново перезапустить код. Чтобы код не отправлял значения user_login и user_password, которые уже есть в нем.
Я пробовал через состояния, но выдал ошибку

Код: Выделить всё

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)
Я пытался решить проблему через чатгпт, но безуспешно.

Подробнее здесь: https://stackoverflow.com/questions/784 ... in-aiogram
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»