typesdigital's picture
Create app.py
7a942bb
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()