7
7
from md2tgmd import escape
8
8
9
9
from ModelMerge .utils .prompt import translator_en2zh_prompt , translator_prompt , claude3_doc_assistant_prompt
10
- from ModelMerge .utils .scripts import Document_extract , claude_replace
10
+ from ModelMerge .utils .scripts import Document_extract , claude_replace , get_image_message
11
11
12
12
import config
13
13
from config import (
24
24
update_ENGINE ,
25
25
reset_ENGINE ,
26
26
get_robot ,
27
- get_image_message ,
28
27
get_ENGINE ,
29
28
update_language_status ,
30
29
update_models_buttons ,
@@ -89,16 +88,26 @@ def CutNICK(update_text, update_message):
89
88
else :
90
89
return None
91
90
91
+ async def get_file_url (file , context ):
92
+ file_id = file .file_id
93
+ new_file = await context .bot .get_file (file_id )
94
+ file_url = new_file .file_path
95
+ return file_url
96
+
92
97
async def GetMesage (update_message , context ):
93
98
image_url = None
99
+ file_url = None
94
100
reply_to_message_text = None
101
+
95
102
chatid = update_message .chat_id
96
103
message_thread_id = update_message .message_thread_id
97
104
if message_thread_id :
98
105
convo_id = str (chatid ) + "_" + str (message_thread_id )
99
106
else :
100
107
convo_id = chatid
108
+
101
109
messageid = update_message .message_id
110
+
102
111
if update_message .text :
103
112
message = CutNICK (update_message .text , update_message )
104
113
rawtext = update_message .text
@@ -108,24 +117,31 @@ async def GetMesage(update_message, context):
108
117
109
118
if update_message .photo :
110
119
photo = update_message .photo [- 1 ]
111
- file_id = photo .file_id
112
- photo_file = await context .bot .getFile (file_id )
113
- image_url = photo_file .file_path
120
+
121
+ image_url = await get_file_url (photo , context )
114
122
115
123
message = rawtext = CutNICK (update_message .caption , update_message )
116
- return message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id
124
+
125
+ if update_message .document :
126
+ file = update_message .document
127
+
128
+ file_url = await get_file_url (file , context )
129
+
130
+ message = rawtext = CutNICK (update_message .caption , update_message )
131
+
132
+ return message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id , file_url
117
133
118
134
async def GetMesageInfo (update , context ):
119
135
if update .edited_message :
120
- message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id = await GetMesage (update .edited_message , context )
136
+ message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id , file_url = await GetMesage (update .edited_message , context )
121
137
update_message = update .edited_message
122
138
elif update .callback_query :
123
- message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id = await GetMesage (update .callback_query .message , context )
139
+ message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id , file_url = await GetMesage (update .callback_query .message , context )
124
140
update_message = update .callback_query .message
125
141
else :
126
- message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id = await GetMesage (update .message , context )
142
+ message , rawtext , image_url , chatid , messageid , reply_to_message_text , message_thread_id , convo_id , file_url = await GetMesage (update .message , context )
127
143
update_message = update .message
128
- return message , rawtext , image_url , chatid , messageid , reply_to_message_text , update_message , message_thread_id , convo_id
144
+ return message , rawtext , image_url , chatid , messageid , reply_to_message_text , update_message , message_thread_id , convo_id , file_url
129
145
130
146
# 定义一个缓存来存储消息
131
147
message_cache = defaultdict (lambda : [])
@@ -136,7 +152,7 @@ async def GetMesageInfo(update, context):
136
152
async def command_bot (update , context , language = None , prompt = translator_prompt , title = "" , robot = None , has_command = True ):
137
153
stop_event .clear ()
138
154
print ("update" , update )
139
- message , rawtext , image_url , chatid , messageid , reply_to_message_text , update_message , message_thread_id , convo_id = await GetMesageInfo (update , context )
155
+ message , rawtext , image_url , chatid , messageid , reply_to_message_text , update_message , message_thread_id , convo_id , file_url = await GetMesageInfo (update , context )
140
156
print ("\033 [32m" , update .effective_user .username , update .effective_user .id , rawtext , "\033 [0m" )
141
157
142
158
if has_command == False or len (context .args ) > 0 :
@@ -188,7 +204,7 @@ async def command_bot(update, context, language=None, prompt=translator_prompt,
188
204
189
205
if "gpt" in engine or (config .CLAUDE_API and "claude-3" in engine ):
190
206
message = [{"type" : "text" , "text" : message }]
191
- message = get_image_message (image_url , message , convo_id )
207
+ message = get_image_message (image_url , message , engine )
192
208
await context .bot .send_chat_action (chat_id = chatid , message_thread_id = message_thread_id , action = ChatAction .TYPING )
193
209
if Users .get_config (convo_id , "TITLE" ):
194
210
title = f"`🤖️ { engine } `\n \n "
@@ -219,7 +235,7 @@ async def delete_message(update, context, messageid, delay=60):
219
235
@decorators .Authorization
220
236
async def reset_chat (update , context ):
221
237
global target_convo_id
222
- _ , _ , _ , chatid , _ , _ , _ , message_thread_id , convo_id = await GetMesageInfo (update , context )
238
+ _ , _ , _ , chatid , _ , _ , _ , message_thread_id , convo_id , file_url = await GetMesageInfo (update , context )
223
239
target_convo_id = convo_id
224
240
print ("target_chatid" , convo_id )
225
241
stop_event .set ()
@@ -322,7 +338,7 @@ async def getChatGPT(update, context, title, robot, message, chatid, messageid,
322
338
@decorators .Authorization
323
339
async def button_press (update , context ):
324
340
"""Function to handle the button press"""
325
- message , rawtext , image_url , chatid , messageid , reply_to_message_text , update_message , message_thread_id , convo_id = await GetMesageInfo (update , context )
341
+ message , rawtext , image_url , chatid , messageid , reply_to_message_text , update_message , message_thread_id , convo_id , file_url = await GetMesageInfo (update , context )
326
342
callback_query = update .callback_query
327
343
print ("callback_query chatid" , chatid )
328
344
info_message = update_info_message (convo_id )
@@ -429,55 +445,25 @@ async def button_press(update, context):
429
445
@decorators .GroupAuthorization
430
446
@decorators .Authorization
431
447
async def info (update , context ):
432
- _ , _ , _ , chatid , _ , _ , _ , message_thread_id , convo_id = await GetMesageInfo (update , context )
448
+ _ , _ , _ , chatid , _ , _ , _ , message_thread_id , convo_id , file_url = await GetMesageInfo (update , context )
433
449
info_message = update_info_message (convo_id )
434
450
message = await context .bot .send_message (chat_id = chatid , message_thread_id = message_thread_id , text = escape (info_message ), reply_markup = InlineKeyboardMarkup (update_first_buttons_message (convo_id )), parse_mode = 'MarkdownV2' , disable_web_page_preview = True )
435
451
await delete_message (update , context , message .message_id )
436
452
437
453
@decorators .GroupAuthorization
438
454
@decorators .Authorization
439
- async def handle_pdf (update , context ):
440
- # 获取接收到的文件
441
- pdf_file = update .message .document
442
- # 得到文件的url
443
- file_id = pdf_file .file_id
444
- new_file = await context .bot .get_file (file_id )
445
- file_url = new_file .file_path
446
- extracted_text_with_prompt = Document_extract (file_url )
455
+ async def handle_file (update , context ):
447
456
robot , role = get_robot ()
457
+ _ , _ , image_url , chatid , _ , messageid , update_message , message_thread_id , convo_id , file_url = await GetMesageInfo (update , context )
458
+ engine = get_ENGINE (chatid )
448
459
449
- _ , _ , _ , chatid , _ , _ , _ , message_thread_id , convo_id = await GetMesageInfo (update , context )
450
- robot .add_to_conversation (extracted_text_with_prompt , role , str (convo_id ))
451
- engine = get_ENGINE (convo_id )
452
- if config .CLAUDE_API and "claude-3" in engine :
453
- robot .add_to_conversation (claude3_doc_assistant_prompt , "assistant" , str (convo_id ))
454
- message = (
455
- f"文档上传成功!\n \n "
456
- )
457
- message = await context .bot .send_message (chat_id = chatid , message_thread_id = message_thread_id , text = escape (message ), parse_mode = 'MarkdownV2' , disable_web_page_preview = True )
458
- await delete_message (update , context , message .message_id )
459
-
460
-
461
- @decorators .GroupAuthorization
462
- @decorators .Authorization
463
- async def handle_photo (update , context ):
464
- _ , _ , _ , chatid , _ , messageid , update_message , message_thread_id , convo_id = await GetMesageInfo (update , context )
465
-
466
- photo = update_message .photo [- 1 ]
467
- file_id = photo .file_id
468
- photo_file = await context .bot .getFile (file_id )
469
- image_url = photo_file .file_path
470
-
471
- robot , role = get_robot ()
472
- message = get_image_message (image_url , [], convo_id )
460
+ message = Document_extract (file_url , None , engine )
473
461
474
462
robot .add_to_conversation (message , role , str (convo_id ))
475
- # if config.CLAUDE_API and "claude-3" in config.GPT_ENGINE:
476
- # robot.add_to_conversation(claude3_doc_assistant_prompt, "assistant", str(update.effective_chat.id))
477
463
message = (
478
- f"图片上传成功 !\n \n "
464
+ f"上传成功 !\n \n "
479
465
)
480
- message = await context .bot .send_message (chat_id = chatid , text = escape (message ), parse_mode = 'MarkdownV2' , disable_web_page_preview = True )
466
+ message = await context .bot .send_message (chat_id = chatid , message_thread_id = message_thread_id , text = escape (message ), parse_mode = 'MarkdownV2' , disable_web_page_preview = True )
481
467
await delete_message (update , context , message .message_id )
482
468
483
469
# DEBOUNCE_TIME = 4
@@ -596,10 +582,10 @@ async def process_update(update):
596
582
application .add_handler (CommandHandler ("zh2en" , lambda update , context : command_bot (update , context , "english" , robot = config .translate_bot )))
597
583
application .add_handler (CommandHandler ("info" , info ))
598
584
application .add_handler (InlineQueryHandler (inlinequery ))
599
- application .add_handler (MessageHandler (filters .Document .PDF | filters .Document .TXT | filters .Document .DOC , handle_pdf ))
585
+ application .add_handler (MessageHandler (filters .Document .PDF | filters .Document .TXT | filters .Document .DOC | filters . Document . FileExtension ( "jpg" ) | filters . Document . FileExtension ( "jpeg" ), handle_file ))
600
586
application .add_handler (MessageHandler (filters .TEXT & ~ filters .COMMAND , lambda update , context : command_bot (update , context , prompt = None , has_command = False ), block = False ))
601
587
application .add_handler (MessageHandler (filters .CAPTION & filters .PHOTO & ~ filters .COMMAND , lambda update , context : command_bot (update , context , prompt = None , has_command = False )))
602
- application .add_handler (MessageHandler (~ filters .CAPTION & filters .PHOTO & ~ filters .COMMAND , handle_photo ))
588
+ application .add_handler (MessageHandler (~ filters .CAPTION & filters .PHOTO & ~ filters .COMMAND , handle_file ))
603
589
application .add_handler (MessageHandler (filters .COMMAND , unknown ))
604
590
application .add_error_handler (error )
605
591
0 commit comments