Не работает функция на aiogram 3

async def send_reminder(chat_id: int, message_id: int, delay: int):
    """
    Отправляет напоминание пользователю, если он не ответил на сообщение бота.

    Args:
        chat_id (int): ID чата, в который нужно отправить сообщение.
        message_id (int): ID сообщения, на которое пользователь не ответил.
        delay (int): Задержка в секундах перед отправкой напоминания.
    """

    # Ждем указанное количество секунд
    await asyncio.sleep(delay)

    # Проверяем, ответил ли пользователь на исходное сообщение за это время
    message = await bot.pin_chat_message(self=bot, chat_id=chat_id, message_id=message_id)
    if message.reply_to_message is None:
        # Пользователь не ответил, отправляем напоминание
        await message.answer("Привет! Кажется, вы не ответили на мое предыдущее сообщение. Пожалуйста, ответьте, когда сможете.")


@router.message(F.text == '/start')
async def reply(message: Message, state: FSMContext, timeout=3):
    await state.set_state(Reg.name)
    await message.answer("Как к тебе обращаться?", reply_markup=keyboard)
    asyncio.create_task(send_reminder(message.chat.id, message.message_id, 3))

Не работает эта функция, выдает ошибку:

unhashable type: 'PinChatMessage'


Ответы (1 шт):

Автор решения: Alexandru
import asyncio
from aiogram import Bot, Dispatcher, F, types
from aiogram.types import Message
from aiogram.fsm.context import FSMContext

bot = Bot(token="YOUR_BOT_TOKEN")
dp = Dispatcher()

async def send_reminder(chat_id: int, message_id: int, delay: int):
    """
    Отправляет напоминание пользователю, если он не ответил на сообщение бота.

    Args:
        chat_id (int): ID чата, в который нужно отправить сообщение.
        message_id (int): ID сообщения, на которое пользователь не ответил.
        delay (int): Задержка в секундах перед отправкой напоминания.
    """
    await asyncio.sleep(delay)

    # Получаем сообщение, чтобы проверить наличие ответа
    message = await bot.get_message(chat_id, message_id)
    if not message.reply_to_message:
        # Пользователь не ответил, отправляем напоминание
        await bot.send_message(chat_id, "Привет! Кажется, вы не ответили на мое предыдущее сообщение. Пожалуйста, ответьте, когда сможете.")

@dp.message(F.text == '/start')
async def reply(message: Message, state: FSMContext):
    await state.set_state("Reg:name")  # Устанавливаем состояние (пример)
    await message.answer("Как к тебе обращаться?", reply_markup=None)  # Добавьте свою клавиатуру
    asyncio.create_task(send_reminder(message.chat.id, message.message_id, 3))

# Запуск бота
if __name__ == "__main__":
    from aiogram import executor
    from aiogram.types import BotCommand

    async def set_commands(bot: Bot):
        commands = [BotCommand(command="/start", description="Начать диалог")]
        await bot.set_my_commands(commands)

    async def on_startup(dp):
        await set_commands(bot)

    executor.start_polling(dp, on_startup=on_startup)
→ Ссылка