• Почему моя асинхронная функция останавливает всю программу?

    @thenewdaniels Автор вопроса
    Всем спасибо за помощь, вот связка которая решила мою проблему:
    Если нет желания искать или подобная асинхронная версия библиотеки отсутствует, можно использовать следующую запись:
    # Функция для запуска синхронного кода в run_in_executor
    async def run_sync_in_executor(sync_func):
        loop = asyncio.get_event_loop()
        return await loop.run_in_executor(None, sync_func)
    
    # Измененная основная функция для запуска синхронного кода в run_in_executor
    async def mainGoogleDoc():
        try:
            text1 = await run_sync_in_executor(userListInGoogle)
            text2 = await run_sync_in_executor(secondStageInList)
            text3 = await run_sync_in_executor(thirdStageInList)
            text4 = await run_sync_in_executor(referalsInList)
            print(text1,text2,text3,text4)
            if text1 == "DONE" and text2 == "DONE" and text3 == "DONE" and text4 == "DONE":
                text = "DONE"
                return text
        except Exception as e:
            text = "Google Docs Error"
            print(f"Google Docs Error {e}")
            return text


    Перед этим я убрал для каждой из функции подпись async def.... сделав её синхронной
    Ответ написан
    Комментировать
  • Aiogram 3 как Установить state для определенного пользователя?

    @thenewdaniels Автор вопроса
    Спасибо всем за помощь. В решении мне помогла вот такая конструкция:
    for user in users:
            user_id = user[0]
            chat_id = user[0]
            state_with: FSMContext = FSMContext(
                #bot=bot,  # объект бота
                storage=dp.storage,  # dp - экземпляр диспатчера
                key=StorageKey(
                    chat_id=chat_id,  # если юзер в ЛС, то chat_id=user_id
                    user_id=user_id,
                    bot_id=bot.id))
                await state_with.update_data() # обновить дату для пользователя
                await state_with.set_state(quizStates.temp1)  # пример присвоения стейта


    В таком случае в state_with будет хранится состояние того человека, user_id которого указан в key
    Ответ написан
    Комментировать
  • Ошибка при запуске телеграм бота aiogram. Как исправить?

    @thenewdaniels
    Вы уже создали объект bot вне функции main и пытаетесь его создать снова внутри main(). Просто уберите эту строку из функции и ошибка должна пропасть
    Ответ написан
    Комментировать