ilhamap commited on
Commit
913919e
·
verified ·
1 Parent(s): 78b59a3

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +47 -37
main.py CHANGED
@@ -1,34 +1,42 @@
1
- import telegram
2
- from telegram import Bot
3
- from telegram.ext import *
4
- import PIL.Image
5
  import os
 
6
  import google.generativeai as genai
7
  import requests
8
  import speech_recognition as sr
9
  import pydub
10
  from pydub import AudioSegment
 
 
 
 
11
  api_genai = os.environ.get("gemini_api")
12
  api_tele = os.environ.get("tele_api")
 
13
  genai.configure(api_key=f'{api_genai}')
14
- model = genai.GenerativeModel('gemini-pro-vision')
15
- bot = Bot(f"{api_tele}")
16
- a=[]
17
 
 
 
 
 
 
 
18
 
19
- def start_command(update, context):
20
- name = update.message.chat.first_name
21
- update.message.reply_text("Hello " + name)
22
- update.message.reply_text("Please share your image")
23
-
24
- def image_handler(update, context):
25
- #print(update)
26
  if update.message.photo:
27
  file = update.message.photo[-1].file_id
28
- obj = context.bot.get_file(file)
29
- obj.download(f'{file}.png')
30
- text=None
31
  a.append(file)
 
 
 
 
 
 
 
 
32
  else:
33
  text = update.message.text
34
 
@@ -37,23 +45,24 @@ def image_handler(update, context):
37
  img = PIL.Image.open(f'{a[-1]}.png')
38
  except:
39
  img=None
40
-
 
41
  if img is not None and text is not None:
42
  print(text,a[-1])
43
  model = genai.GenerativeModel('gemini-pro-vision')
44
  response = model.generate_content([img,text])
45
- update.message.reply_text(response.text)
46
  text=None
47
  img=None
48
  os.remove(f'{a[-1]}.png')
49
- if text is not None and img is None:
50
- model = genai.GenerativeModel('gemini-pro')
51
- response = model.generate_content(text)
52
- update.message.reply_text(response.text)
53
  if update.message.voice:
54
  file_aud = update.message.voice.file_id
55
- obj = context.bot.get_file(file_aud)
56
- obj.download(f'{file_aud}.ogg')
 
 
 
57
  audio_file = f'{file_aud}.ogg'
58
 
59
  # Convert the audio file to WAV format
@@ -72,21 +81,22 @@ def image_handler(update, context):
72
  print(text1)
73
  model = genai.GenerativeModel('gemini-pro')
74
  response = model.generate_content(text1)
75
- update.message.reply_text(response.text)
76
  os.remove(f'{file_aud}.wav')
77
  os.remove(f'{file_aud}.ogg')
78
 
 
 
 
 
79
 
80
- def main():
81
- print("Started")
82
- TOKEN = f"{api_tele}"
83
- updater = Updater(TOKEN, use_context=True)
84
- dp = updater.dispatcher
85
- dp.add_handler(CommandHandler("start", start_command))
86
- dp.add_handler(MessageHandler(Filters.text | Filters.photo | Filters.audio | Filters.voice, image_handler))
87
 
88
- updater.start_polling()
89
- updater.idle()
 
 
 
90
 
91
- if __name__ == '__main__':
92
- main()
 
1
+ %%writefile app.py
2
+ import logging
3
+ import shutil
4
+ import requests
5
  import os
6
+ import PIL.Image
7
  import google.generativeai as genai
8
  import requests
9
  import speech_recognition as sr
10
  import pydub
11
  from pydub import AudioSegment
12
+ from telegram import Update
13
+ from telegram.ext import (ApplicationBuilder, CommandHandler, ContextTypes,
14
+ MessageHandler, filters)
15
+ a=[]
16
  api_genai = os.environ.get("gemini_api")
17
  api_tele = os.environ.get("tele_api")
18
+ TELEGRAM_API_TOKEN = f"{api_tele}"
19
  genai.configure(api_key=f'{api_genai}')
 
 
 
20
 
21
+ # logging.basicConfig(
22
+ # format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
23
+ # level=logging.INFO
24
+ # )
25
+ async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
26
+ await context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")
27
 
28
+ async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
 
 
 
 
 
 
29
  if update.message.photo:
30
  file = update.message.photo[-1].file_id
 
 
 
31
  a.append(file)
32
+ obj = await context.bot.getFile(file)
33
+
34
+ response = requests.get(obj.file_path, stream=True)
35
+ if response.status_code == 200:
36
+ with open(f'{file}.png', 'wb') as file:
37
+ file.write(response.content)
38
+ text=None
39
+
40
  else:
41
  text = update.message.text
42
 
 
45
  img = PIL.Image.open(f'{a[-1]}.png')
46
  except:
47
  img=None
48
+
49
+
50
  if img is not None and text is not None:
51
  print(text,a[-1])
52
  model = genai.GenerativeModel('gemini-pro-vision')
53
  response = model.generate_content([img,text])
54
+ await context.bot.send_message(chat_id=update.effective_chat.id, text=response.text)
55
  text=None
56
  img=None
57
  os.remove(f'{a[-1]}.png')
58
+
 
 
 
59
  if update.message.voice:
60
  file_aud = update.message.voice.file_id
61
+ obj = await context.bot.getFile(file_aud)
62
+ response = requests.get(obj.file_path, stream=True)
63
+ if response.status_code == 200:
64
+ with open(f'{file_aud}.ogg', 'wb') as file:
65
+ file.write(response.content)
66
  audio_file = f'{file_aud}.ogg'
67
 
68
  # Convert the audio file to WAV format
 
81
  print(text1)
82
  model = genai.GenerativeModel('gemini-pro')
83
  response = model.generate_content(text1)
84
+ await context.bot.send_message(chat_id=update.effective_chat.id, text=response.text)
85
  os.remove(f'{file_aud}.wav')
86
  os.remove(f'{file_aud}.ogg')
87
 
88
+ if text is not None and img is None:
89
+ model = genai.GenerativeModel('gemini-pro')
90
+ response = model.generate_content(text)
91
+ await context.bot.send_message(chat_id=update.effective_chat.id, text=response.text)
92
 
93
+ if __name__ == '__main__':
94
+ application = ApplicationBuilder().token(TELEGRAM_API_TOKEN).build()
 
 
 
 
 
95
 
96
+ start_handler = CommandHandler('start', start)
97
+ echo_handler = MessageHandler(filters.PHOTO & (~filters.COMMAND) | filters.TEXT & (~filters.COMMAND) |
98
+ filters.VOICE & (~filters.COMMAND), echo)
99
+ application.add_handler(start_handler)
100
+ application.add_handler(echo_handler)
101
 
102
+ application.run_polling()