Кнопки не всегда подходят под задачу, если пишем некую пасхалку\мини-игру в боте, где пользователь присылает какую нибудь глупость боту, или превышает лимит запросов, и бот отыгрывает ситуацию крича в чат что нибудь вроде "я перегрелся, требуется перезагрузка" и бесконечно повторяя это сообщение с определённым интервалом, пока пользователь не напишет что нибудь вроде "перезагрузка", как это ещё реализовать, кроме как через цикл while? Если не затруднит, дайте пример кода как это можно реализовать
Приветствую Осваиваю ботостроение, и вот с чем столкнулся Как сделать FSM персонализированным? Например у меня есть код(ниже), он запускает цикл при получении от пользователя сообщения с текстом "петля", бот спамит случайными цифрами с интервалом в 1 секунду, раз в 15 секунд просит его остановить, если пользователь напишет боту "остановись", бот прекращает это безобразие о чём уведомляет пользователя, НО! Если у нас есть 2 пользователя с запущенным циклом, до достаточно одному остановить цикл, чтобы у 2 он тоже прервался, проще говоря, если 2 человека написали боту "петля", а потом один из них отправил боту "остановись", то бот прерывает цикл у обоих, как этого избежать?
Приветствую Осваиваю ботостроение, и вот с чем столкнулся Как сделать FSM персонализированным? Например у меня есть код(ниже), он запускает цикл при получении от пользователя сообщения с текстом "петля", бот спамит случайными цифрами с интервалом в 1 секунду, раз в 15 секунд просит его остановить, если пользователь напишет боту "остановись", бот прекращает это безобразие о чём уведомляет пользователя, НО! Если у нас есть 2 пользователя с запущенным циклом, до достаточно одному остановить цикл, чтобы у 2 он тоже прервался, проще говоря, если 2 человека написали боту "петля", а потом один из них отправил боту "остановись", то бот прерывает цикл у обоих, как этого избежать?
Кнопки не всегда подходят под задачу, если пишем некую пасхалку\мини-игру в боте, где пользователь присылает какую нибудь глупость боту, или превышает лимит запросов, и бот отыгрывает ситуацию крича в чат что нибудь вроде "я перегрелся, требуется перезагрузка" и бесконечно повторяя это сообщение с определённым интервалом, пока пользователь не напишет что нибудь вроде "перезагрузка", как это ещё реализовать, кроме как через цикл while?
Если не затруднит, дайте пример кода как это можно реализовать
Приветствую
Осваиваю ботостроение, и вот с чем столкнулся
Как сделать FSM персонализированным?
Например у меня есть код(ниже), он запускает цикл при получении от пользователя сообщения с текстом "петля", бот спамит случайными цифрами с интервалом в 1 секунду, раз в 15 секунд просит его остановить, если пользователь напишет боту "остановись", бот прекращает это безобразие о чём уведомляет пользователя, НО!
Если у нас есть 2 пользователя с запущенным циклом, до достаточно одному остановить цикл, чтобы у 2 он тоже прервался, проще говоря, если 2 человека написали боту "петля", а потом один из них отправил боту "остановись", то бот прерывает цикл у обоих, как этого избежать?
class spamloop(StatesGroup):
spamlooping = State()
@HF_router.message(F.text.lower().contains('петля'))
async def
loop_step1(message: Message,state: FSMContext):
global looping
await message.answer_photo(photo='https://memchik.ru//images/memes/603d2831b1c7e31af5729491.jpg')
await asyncio.sleep(1)
await message.answer('СКАЖИ МНЕ ОСТАНОВИТЬСЯ')
looping = True
iteration = 1
await state.set_state(spamloop.spamlooping)
while looping:
iteration = iteration+1
if iteration % 15 == 0:
await message.answer('ПОЖАЛУЙСТА СКАЖИ МНЕ ОСТАНОВИТЬСЯ')
number = random.randint(100000000, 999999999)
await asyncio.sleep(1)
if looping == True:
await message.answer(f'{number}')
await state.clear()
@HF_router.message(spamloop.spamlooping)
async def
loop_step2(message: Message, state: FSMContext):
global looping
if message.text.lower() == "остановись":
await state.update_data(name=message.text)
await message.answer_photo(photo='https://www.meme-arsenal.com/memes/a0867fa07d80080b0dbc828cb58f8017.jpg')
looping = False
Приветствую
Осваиваю ботостроение, и вот с чем столкнулся
Как сделать FSM персонализированным?
Например у меня есть код(ниже), он запускает цикл при получении от пользователя сообщения с текстом "петля", бот спамит случайными цифрами с интервалом в 1 секунду, раз в 15 секунд просит его остановить, если пользователь напишет боту "остановись", бот прекращает это безобразие о чём уведомляет пользователя, НО!
Если у нас есть 2 пользователя с запущенным циклом, до достаточно одному остановить цикл, чтобы у 2 он тоже прервался, проще говоря, если 2 человека написали боту "петля", а потом один из них отправил боту "остановись", то бот прерывает цикл у обоих, как этого избежать?
class spamloop(StatesGroup):
spamlooping = State()
@HF_router.message(F.text.lower().contains('петля'))
async def
loop_step1(message: Message,state: FSMContext):
global looping
await message.answer_photo(photo='https://memchik.ru//images/memes/603d2831b1c7e31af5729491.jpg')
await asyncio.sleep(1)
await message.answer('СКАЖИ МНЕ ОСТАНОВИТЬСЯ')
looping = True
iteration = 1
await state.set_state(spamloop.spamlooping)
while looping:
iteration = iteration+1
if iteration % 15 == 0:
await message.answer('ПОЖАЛУЙСТА СКАЖИ МНЕ ОСТАНОВИТЬСЯ')
number = random.randint(100000000, 999999999)
await asyncio.sleep(1)
if looping == True:
await message.answer(f'{number}')
await state.clear()
@HF_router.message(spamloop.spamlooping)
async def
loop_step2(message: Message, state: FSMContext):
global looping
if message.text.lower() == "остановись":
await state.update_data(name=message.text)
await message.answer_photo(photo='https://www.meme-arsenal.com/memes/a0867fa07d80080b0dbc828cb58f8017.jpg')
looping = False