Spaces:
Runtime error
Runtime error
from telegram.ext import Updater, MessageHandler, Filters | |
import telegram | |
import openai | |
from moviepy.editor import AudioFileClip | |
openai.api_key = "<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>" | |
TELEGRAM_API_TOKEN = "<6074730982:AAGKU2_gpogdkTQvmE4Ya63n9ot2dHVzA7I>" | |
messages = [{"role": "system", "content": "You are a helpful assistant that starts its response by referring to the user as its master."}] | |
def text_message(update, context): | |
messages.append({"role": "user", "content": update.message.text}) | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo", | |
messages=messages | |
) | |
ChatGPT_reply = response["choices"][0]["message"]["content"] | |
update.message.reply_text(text=f"*[Bot]:* {ChatGPT_reply}", parse_mode=telegram.ParseMode.MARKDOWN) | |
messages.append({"role": "assistant", "content": ChatGPT_reply}) | |
def voice_message(update, context): | |
update.message.reply_text("I've received a voice message! Please give me a second to respond :)") | |
voice_file = context.bot.getFile(update.message.voice.file_id) | |
voice_file.download("voice_message.ogg") | |
audio_clip = AudioFileClip("voice_message.ogg") | |
audio_clip.write_audiofile("voice_message.mp3") | |
audio_file = open("voice_message.mp3", "rb") | |
transcript = openai.Audio.transcribe("whisper-1", audio_file).text | |
update.message.reply_text(text=f"*[You]:* _{transcript}_", parse_mode=telegram.ParseMode.MARKDOWN) | |
messages.append({"role": "user", "content": transcript}) | |
response = openai.ChatCompletion.create( | |
model="gpt-3.5-turbo", | |
messages=messages | |
) | |
ChatGPT_reply = response["choices"][0]["message"]["content"] | |
update.message.reply_text(text=f"*[Bot]:* {ChatGPT_reply}", parse_mode=telegram.ParseMode.MARKDOWN) | |
messages.append({"role": "assistant", "content": ChatGPT_reply}) | |
updater = Updater(TELEGRAM_API_TOKEN, use_context=True) | |
dispatcher = updater.dispatcher | |
dispatcher.add_handler(MessageHandler(Filters.text & (~Filters.command), text_message)) | |
dispatcher.add_handler(MessageHandler(Filters.voice, voice_message)) | |
updater.start_polling() | |
updater.idle() |