Как обработать сообщение в Telegram BOT

Рейтинг: 0Ответов: 1Опубликовано: 26.04.2023

введите сюда описание изображения

 from aiogram import Bot, Dispatcher, executor, types
 import openai
 import os


 openai.api_key = '-'
 openai.Model.list()

 API_TOKEN = '-'

 bot = Bot(token=API_TOKEN)
 dp = Dispatcher(bot)

 @dp.message_handler(commands=['start'])
    async def welcome_command(message: types.Message):
       await message.answer(f'Добро пожаловать, {message.from_user.first_name}!')

 @dp.message_handler()
     async def answer (message: types.Message):
        response = openai.Completion.create(
        model='text-davinci-003',
        prompt=message.text,
        temperature=1,
        max_tokens=2048,
        top_p=1,
        frequency_penalty=0,
        presence_penalty=0.6,
        stop=[" Human:", " AI:"]
 )
    await message.reply(response['choices'][0]['text'])


   if __name__ == '__main__':
       executor.start_polling(dp)

Нигде не могу найти инфу, как на написанное боту сообщение сначала бы вылезало сообщение "обрабатываем ваш вопрос ", а после исчезало и обрабатывало бы запрос.

Ответы

▲ 0

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

await bot.edit_message_text(
chat_id=xxxx,                               
message_id=int(msg_id),                              
text=f"xxxx {text}")

ну, либо же использовать после сообщения обработки, использовать библиотеку time и метод time.sleep(2), удалять сообщение и отправлять результат.

небольшой пример использования:

@dp.message_handler()
async def process_message(message: types.Message):
    await bot.send_message(message.chat.id, 'Обрабатываем ваш вопрос...')
    await asyncio.sleep(2)  # Имитация обработки запроса
    await bot.delete_message(message.chat.id, message.message_id)  # Удаление сообщения
    await bot.send_message(message.chat.id, f'Ваш запрос обработан: {message.text}') 

Помни что: asyncio.sleep используется как задержка.