Как получить оригинальное сообщение, на которое пользователь дал ответ?

Как можно получить сообщение на которое пользователь ответил, передавая переменную сообщии на которое отвечено, если это сообщение является постом в канале? Как решить проблему AttributeError: 'TeleBot' object has no attribute 'get_message'?
  • 14 марта 2024 г. 18:09
Ответы на вопрос 3
Для того чтобы получить оригинальное сообщение, на которое пользователь дал ответ, можно воспользоваться методом `get_chat_member` бота для получения информации о члене чата, который отправил ответ, а затем использовать метод `get_message` для получения самого сообщения. Примерно так:

```python
import telebot

bot = telebot.TeleBot("YOUR_API_TOKEN")

@bot.message_handler(func=lambda message: message.reply_to_message is not None)
def reply_handler(message):
    original_message = bot.get_message(message.reply_to_message)

    # Далее можно использовать original_message для работы с оригинальным сообщением

bot.polling()
```

Теперь, чтобы получить сообщение на которое пользователь ответил, передавая переменную сообщии на которое отвечено, если это сообщение является постом в канале, можно воспользоваться методом `get_chat` для получения информации о чате и далее использовать `get_message` для получения самого сообщения. Примерно так:

```python
@bot.channel_post_handler()
def channel_post_handler(message):
    original_message = bot.get_message(message.reply_to_message)

    # Далее можно использовать original_message для работы с оригинальным сообщением
```

Что касается ошибки `AttributeError: 'TeleBot' object has no attribute 'get_message'`, то это означает, что у объекта `TeleBot` нет атрибута `get_message`, поэтому вместо этого метода можно воспользоваться функцией `get_updates`, которая возвращает список обновлений бота. Из полученного списка можно извлечь сообщение на которое пользователь ответил.
А зачем ты делаешь get_message(), если message.reply_to_message уже должен содержать информацию о сообщении, на которое был сделан ответ?
message.reply_to_message - уже сообщение. 

Можно сразу получить тип чата этого сообщения и сделать проверку условием:
if message.reply_to_message.chat.type == 'channel':
    #ваш код
Похожие вопросы