Из постановки задачи: тебе надо работать с сообщением, так?
Открываешь
документацию и ищешь класс, описывающий сообщение. Подсказка: обычно такой класс называется Message.
Внимательно просматриваешь его свойства и методы, ищешь всё, что касается ответов (ключевые слова: reply, response и т.п.).
Находишь свойство
reply_to_message. Читаешь:
reply_to_message: Message | None
Optional. For replies in the same chat and message thread, the original message. Note that the Message object in this field will not contain further reply_to_message fields even if it itself is a reply.
Тип данных (Message | None) и подсказка Optional говорят о том, что в этом поле может лежать либо None (очевидно, если сообщение не является ответом), либо ещё один объект Message (тогда это сообщение, на который был ответ).
Теперь как разобраться с автором сообщения. Аналогично ищем свойства и методы класса Message по ключевым словам user, author и т.п. Находим свойство
from_user.
from_user: User | None
Optional. Sender of the message; empty for messages sent to channels. For backward compatibility, the field contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat.
Достаточно, чтобы понять, что в этом свойстве должен лежать объект, описывающий автора сообщения.
Теперь осталось собрать вместе логику работы бота:
- Бот получает уведомление о сообщении
- Бот проверяет, было ли сообщение отправлено в тот чат, где он должен работать (свойство chat)
- Бот проверяет, отправлено ли сообщение тобой (свойство from_user)
- Бот проверяет, является ли сообщение ответом (свойство reply_to_message)
- Бот получает оригинальное сообщение и извлекает его отправителя
- Бот банит этого отправителя
Как забанить пользователя - упражнение для читателя.
Учись искать и разбираться в документации, без этого навыка никуда.