@uruguala

Vkbottle: Как редактировать стартовое сообщение в моем коде?

Всем привет. Сегодня столкнулся с проблемой, пытался её решить несколько часов. Помогите пожалуйста!
Код:
async def start_game(message: Message, peer_id: int):
    game_id = random.randint(1, 100000)
    stake = random.choice(STAKES)
    keyboard = create_game_keyboard(game_id)
    
    try:
        sent_message = await bot.api.messages.send(
            peer_id=peer_id,
            message=(
                " Набор в игру!\n\n"
                "Нажмите на кнопку ниже, чтобы присоединиться!"
            ),
            keyboard=keyboard,
            disable_mentions=1,
            random_id=game_id,
            attachment=photo
        )

        # Сохранение игры в словарь
        games[peer_id] = {
            "players": [],
            "stake": stake,
            "game_id": game_id,
            "keyboard": keyboard,
            "timeout_task": asyncio.create_task(game_timeout(peer_id, game_id)),
        }

        # Сохранение данных об игре в MongoDB
        game_data = {
            "peer_id": peer_id,
            "game_id": game_id,
            "stake": stake,
            "players": [],
            "start_time": datetime.utcnow(),
            "status": "ongoing"
        }
        await transactions_collection.insert_one(game_data)

        logger.info(f"Игра начата для {peer_id}, ID сообщения: {game_id}")

    except Exception as e:
        logger.error(f"Ошибка при отправке сообщения для {peer_id}: {e}")


Пытался редактировать, если игра остаётся без пользователей некоторое время:
# Функция для обработки таймаута игры
async def game_timeout(peer_id: int, game_id: int):
    await asyncio.sleep(JOIN_TIME)
    game = games.get(peer_id)
    last_message = game["game_id"]
    
    if game and game["game_id"] == game_id:
        if len(game["players"]) < MIN_PLAYERS:

            await bot.api.messages.edit(
                peer_id=peer_id, 
                conversation_message_id=last_message,
                message=(f"Игра закончена, так как никто в неё не вошёл."), disable_mentions=1
            )
                            
            del games[peer_id]
            
        else:
            await play_game(peer_id)


Сталкивался с ошибками типо:
'int' object has no attribute 'conversation_message_id'

One of the parameters specified was missing or invalid: On
ly one parameter from (cmids, peer_cmids, message_ids) must be undefined

Internal server error

Access denied: me
ssage can not be found

(Ошибки разные, так как пытался решить проблему разными способами).
vkbottle==4.4.1
vkbottle-types==5.199.63.1
motor==3.6.0
pymongo==4.9.1
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы