AttributeError: 'NoneType' object has no attribute 'text', при вводе команды в телеграм боте /set_titlе. бот должен менять заголовок но вылазит ошибка

Смотрю курс по разработке телеграм ботов, код беру из этого же курса, но этот код у меня не работает, в учителя работает

@dp.message_handler(IsGroup(), Command('set_title'), AdminFilter())
async def set_title_groups(message: types.Message):
    source_message = message.reply_to_message
    title = source_message.text
    await message.chat.set_title(title)
AttributeError: 'NoneType' object has no attribute 'text'

Также ошибка появляется когда пытаюсь заменить фото групы

@dp.message_handler(IsGroup(), Command('set_photo'), AdminFilter())
async def set_photo_groups(message: types.Message):
    source_message = message.reply_to_message
    photo = source_message.photo[-1]
    photo = await photo.download(destination=io.BytesIO())
    input_file = types.InputFile(path_or_bytesio=photo)
    await message.chat.set_photo(photo=input_file)

AttributeError: 'NoneType' object has no attribute 'photo'

Как быть, что нужно поменять в коде?


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

Автор решения: MyZik

Исходя из Вашего кода

source_message = message.reply_to_message

Эту команду нужно использовать ответом на сообщение. Т.е., выберите сообщение в мессенджере, и в поле сообщения напишите /set_title.

В таком случае, Вашу функцию можно дополнить:

@dp.message_handler(IsGroup(), Command('set_title'), AdminFilter())
async def set_title_groups(message: types.Message):
    source_message = message.reply_to_message

    if not source_message:
        return await.message.reply("Использовать эту команду можно только ответом на сообщение!")
    

    title = source_message.text
    await message.chat.set_title(title)
→ Ссылка