Возникла проблема, сделал бота для телеграмма который использует Chatgpt-turbo-3.5 вообщем в нём есть все функции чата gpt и еще распознование голосовых сообщений через ffmper.
Так вот всё работает отлично, но было сделано так чтобы бот отвечал только на те сообщения которые адресованны линчо ему через @bot а все остальные игнорировал и это работает с текстовыми сообщениями но при отправлении голосовых сообщений нет возможности использовать команду @ в телеграмме
соответственно бот либо отвечает вообще на все голосовые сообщения которые даже не ему предназначены были либо не отвечает ни на какие
Пришла идея реализовать это через функцию reply в телеге чтобы бот отвечал только на те голосовые сообщения которые являються ответом на его же сообщения через reply
Если кто знает подскажите код как это реализовать внутри этой функции
async def chat_voice(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
или может есть какой то другой более простой способ решения этой проблемы?

Для реализации этой функции вы можете использовать метод reply_to_message из библиотеки python-telegram-bot. Этот метод позволяет отвечать только на те сообщения, которые были отправлены в ответ на ваше сообщение. Вы можете использовать этот метод для проверки, было ли голосовое сообщение отправлено в ответ на ваше сообщение, и если да, то отвечать на него. Вот пример кода, который вы можете использовать для реализации этой функции:
async def chat_voice(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
if update.message.reply_to_message is not None:
# Отвечаем только на те сообщения, которые были отправлены в ответ на ваше сообщение
await context.bot.send_voice(chat_id=update.message.chat_id, voice=update.message.voice)
else:
# Игнорируем все остальные сообщения
pass
Вот видишь, тебе целых два механических придатка к ChatGPT ответы ChatGPT скопипастили. Если делаешь бота, то и вопрос надо задавать сначала боту
Для того, чтобы бот отвечал только на те голосовые сообщения, которые являются ответом на его же сообщения через reply, вы можете использовать параметры `reply_to_message` и `from_user` в связке с проверкой типа сообщения на голосовое. Пример кода для реализации этой функциональности может выглядеть следующим образом:
python
async def chat_voice(self, update: Update, context: ContextTypes.DEFAULT_TYPE):
message = update.message
# Проверяем, является ли сообщение голосовым и является ли оно ответом на сообщение бота
if message.voice and message.reply_to_message and message.reply_to_message.from_user.id == self.bot_id:
# Обработка голосового сообщения и отправка ответа
...
else:
# Игнорирование других голосовых сообщений
...
В этом коде мы проверяем, является ли сообщение голосовым и является ли оно ответом на сообщение бота (`message.reply_to_message.from_user.id ==
self.bot _id`). Если оба условия выполняются, мы обрабатываем голосовое сообщение и отправляем ответ. В противном случае мы просто игнорируем сообщение.