Как обработать сообщение в Telegram BOT
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)
Нигде не могу найти инфу, как на написанное боту сообщение сначала бы вылезало сообщение "обрабатываем ваш вопрос ", а после исчезало и обрабатывало бы запрос.
Ответы (1 шт):
Автор решения: cool rage
→ Ссылка
для изменения используется метод ниже. Тебе надо собирать 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 используется как задержка.
