typesdigital commited on
Commit
7a942bb
·
1 Parent(s): ac78459

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +45 -0
app.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from telegram.ext import Updater, MessageHandler, Filters
2
+ import telegram
3
+ import openai
4
+ from moviepy.editor import AudioFileClip
5
+
6
+ openai.api_key = "<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>"
7
+ TELEGRAM_API_TOKEN = "<6074730982:AAGKU2_gpogdkTQvmE4Ya63n9ot2dHVzA7I>"
8
+
9
+ messages = [{"role": "system", "content": "You are a helpful assistant that starts its response by referring to the user as its master."}]
10
+
11
+ def text_message(update, context):
12
+ messages.append({"role": "user", "content": update.message.text})
13
+ response = openai.ChatCompletion.create(
14
+ model="gpt-3.5-turbo",
15
+ messages=messages
16
+ )
17
+ ChatGPT_reply = response["choices"][0]["message"]["content"]
18
+ update.message.reply_text(text=f"*[Bot]:* {ChatGPT_reply}", parse_mode=telegram.ParseMode.MARKDOWN)
19
+ messages.append({"role": "assistant", "content": ChatGPT_reply})
20
+
21
+ def voice_message(update, context):
22
+ update.message.reply_text("I've received a voice message! Please give me a second to respond :)")
23
+ voice_file = context.bot.getFile(update.message.voice.file_id)
24
+ voice_file.download("voice_message.ogg")
25
+ audio_clip = AudioFileClip("voice_message.ogg")
26
+ audio_clip.write_audiofile("voice_message.mp3")
27
+ audio_file = open("voice_message.mp3", "rb")
28
+ transcript = openai.Audio.transcribe("whisper-1", audio_file).text
29
+ update.message.reply_text(text=f"*[You]:* _{transcript}_", parse_mode=telegram.ParseMode.MARKDOWN)
30
+ messages.append({"role": "user", "content": transcript})
31
+ response = openai.ChatCompletion.create(
32
+ model="gpt-3.5-turbo",
33
+ messages=messages
34
+ )
35
+ ChatGPT_reply = response["choices"][0]["message"]["content"]
36
+ update.message.reply_text(text=f"*[Bot]:* {ChatGPT_reply}", parse_mode=telegram.ParseMode.MARKDOWN)
37
+ messages.append({"role": "assistant", "content": ChatGPT_reply})
38
+
39
+
40
+ updater = Updater(TELEGRAM_API_TOKEN, use_context=True)
41
+ dispatcher = updater.dispatcher
42
+ dispatcher.add_handler(MessageHandler(Filters.text & (~Filters.command), text_message))
43
+ dispatcher.add_handler(MessageHandler(Filters.voice, voice_message))
44
+ updater.start_polling()
45
+ updater.idle()