Почему функция не ловит состояние в aiogram3?
В функции sendRassInLs
я задаю состояние linksForRas
. Почему когда пользователь заходит в состояние linksForRas
и отправляет сообщение, в функции gotLinksForRass
должно ловиться состояние linksForRas
и отправить сообщение Сообщение получено!, но оно то ловит то нет.
Из-за чего это?
async def sendRassInLs(callback: CallbackQuery, state: FSMContext):
await state.set_state(Rass.linksForRas)
await callback.message.edit_text('<b>Введите сообщение:</b>', reply_markup=kb.BackToRass, parse_mode='html')
@router.message(Rass.linksForRas)
async def gotLinksForRass(message: Message, state: FSMContext):
await state.update_data(linksForRas=message.text)
await message.delete()
await message.answer("Сообщение получено!: ")
await state.set_state(Rass.msgForRas)
@router.message(Rass.msgForRas)
async def send_msg_in_ls(message: Message, state: FSMContext):
await state.update_data(msgForRas=message.text)
user_id = message.from_user.id
token = await get_token_from_database(user_id)
data = await state.get_data()
accsForRass = data["linksForRas"]
msg = data["linksForRas"]
остальной код...
Cостояние:
class Rass(StatesGroup):
linksForRas = State()
msgForRas = State()
И почему все время в логах мне пишет:
ERROR:aiogram.dispatcher:Failed to fetch updates - TelegramConflictError: Telegram server says - Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
WARNING:aiogram.dispatcher:Sleep for 3.471689 seconds and try again... (tryings = 4, bot id = 7024637563)
Ответы (2 шт):
У вас запущено два бота на одном токене, именно поэтому вы всегда видите такую ошибку в логах, возможно, поэтому и не ловится состояние, ведь сейчас запущен "старый" код(где ещё нет состояний), а вы пытаетесь запустить "новый".
Telegram server says - Conflict: terminated by other getUpdates request; make sure that only one bot instance is running
На Linux в командной строке я ввел следующие команды:
Посмотрел на идентификатор процесса (PID)
ps -aux | grep <ИМЯ_СКРИПТА>
И ввел команду что бы убить этот процесс
kill -9 <PID>