Задать вопрос
@microklop
Начинающий писатель на PYTHON

Как удалить сообщение с канала, bot.delete_message удаляет текст и одну картинку?

Есть бот в котором есть функция удаления определенного сообщения с канала, но почему то при использовании bot.delete_message он удаляет текст и 1 картинку. А например если было их 5 штук то остальные 4 остаются и не удаляются. Подскажите пожалуйста как удалить все сообщение полностью со всеми картинками.
Вот часть кода которая отвечает за удаление:
@dp.callback_query_handler(lambda c: c.data.startswith('delete'))
async def process_callback_delete_ad(callback_query: types.CallbackQuery):
    ad_id = callback_query.data.split("_")[1]
    try:
        async with aiomysql.create_pool(user=DB_USER, password=DB_PASSWORD, db=DB_NAME, host=DB_HOST) as pool:
            async with pool.acquire() as conn:
                async with conn.cursor() as cur:
                    # get message id of the ad
                    await cur.execute(f"SELECT message_id FROM ads WHERE id = {ad_id}")
                    message_id = await cur.fetchone()
                    if message_id is not None:
                        message_id = message_id[0]
                    await cur.execute(f"DELETE FROM photos WHERE ad_id = {ad_id}")
                    await conn.commit()
                    await cur.execute(f"DELETE FROM ads WHERE id = {ad_id}")
                    await conn.commit()

        # delete message from the channel
        if message_id is not None:
            await bot.delete_message(CHANNEL_ID, message_id)

        await bot.send_message(callback_query.from_user.id, "Ваше объявление успешно удалено!")

    except exceptions.MessageCantBeDeleted:
        await bot.send_message(callback_query.from_user.id, "Объявление не может быть удалено.")
  • Вопрос задан
  • 382 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
  1. скорее всего там не одно сообщение, а пять.
  2. для работы с бд нее используй форматирование. используй подготовленные запросы.
    - cur.execute(f"DELETE FROM photos WHERE ad_id = {ad_id}")
    + cur.execute(f"DELETE FROM photos WHERE ad_id = ?", (ad_id,))

  3. бот не может удалять слишком старые сообщения
  4. на вопрос ставь максимально близкий тег, в твоем случае - AIOGRAM
Ответ написан
Ваш ответ на вопрос

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

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