Python telegram bot async не работает одновременно в 2 группах

У меня есть telegram бот, написанный с помощью пакета python telegram bot с последним релизом и у меня есть проблема, бот работает отлично, все работает, но когда я пытаюсь запустить его в 2** разных группах** одновременно, бот сначала завершает первый запрос в группе A, затем обрабатывает запрос из группы B вот пример кода


    
async def start_blackjack(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    if not await check_player(update, context):
        return
    chat_id = update.message.chat_id
    game = await sync_to_async(lambda: Game.objects.filter(chat_id=chat_id).order_by('-id').first())()

    if not game or game.ended:
        game, created = await sync_to_async(Game.objects.get_or_create)(chat_id=chat_id,  ended=False)
        game.betting = True
        game.started = False
        await sync_to_async(game.save)()

        await asyncio.sleep(2)  # Non-blocking sleep
        await context.bot.send_message(chat_id=chat_id, text="🃏 Set the bet amount for the blackjack game to start.")

        await create_poll(update, context)  # Assume this is an async function
        await asyncio.sleep(2)  # Non-blocking sleep
        await context.bot.send_message(chat_id=chat_id, text="🃏 Betting process has started!")
        return

    if game.betting:
        await update.message.reply_text("A Blackjack game is in betting progress. Wait for the betting process to end and use /join to join the game.")
    elif game.started:
        await update.message.reply_text("A game has already started. Use the /next command to be prompted when the next game starts.")
    elif game.join_time:
        await update.message.reply_text("A game is in join time. Use the /join command to join the game.")
    else:
        await update.message.reply_text("An error occurred, please try again.")

сначала код был написан без асинхронных функций, потом я подумал, почему он не работает в двух группах одновременно, или почему он не обрабатывает простую команду, когда бот выполняет другую команду, поэтому я переписал все с асинхронными функциями и использовал sync_to_async для django orm, но проблема все равно существует, как будто ничего не изменилось. модель django для бота:


class Game(models.Model):
    chat_id = models.CharField(max_length=100)
    betting = models.BooleanField(default=False)
    started = models.BooleanField(default=False)
    join_time = models.BooleanField(default=False)
    ended = models.BooleanField(default=False)
    hands_reset = models.BooleanField(default=False)
    bet_amount = models.IntegerField(default=5)
    dealer_hand = models.JSONField(default=list)  # To store the dealer's hand
    turn_order = models.JSONField(default=list)  # To store the turn order
    current_round = models.IntegerField(default=1)  # Current round number
    total_rounds = models.IntegerField(default=5)  # Total number of rounds in the game
    pot = models.IntegerField(default=0)  # Total pot amount
    join_start_time = models.DateTimeField(null=True, blank=True)  # Time when join period starts

По умолчанию python-telegram-bot обрабатывает обратные вызовы в блокирующем режиме. Если вы еще не сделали этого, вам нужно включить одновременное обновление при создании приложения следующим образом:

Application.builder().token('TOKEN').concurrent_updates(True).build()

источник: https://github.com/python-telegram-bot/python-telegram-bot/wiki/Concurrency#applicationconcurrent_updates

Вернуться на верх