fix bugs
This commit is contained in:
		
							parent
							
								
									61eb0da861
								
							
						
					
					
						commit
						bf955aaf12
					
				@ -358,29 +358,42 @@ def get_crazy_functions():
 | 
				
			|||||||
        })
 | 
					        })
 | 
				
			||||||
        from crazy_functions.Latex输出PDF结果 import Latex翻译中文并重新编译PDF
 | 
					        from crazy_functions.Latex输出PDF结果 import Latex翻译中文并重新编译PDF
 | 
				
			||||||
        function_plugins.update({
 | 
					        function_plugins.update({
 | 
				
			||||||
            "[功能尚不稳定] Latex翻译/Arixv翻译+重构PDF": {
 | 
					            "Arixv翻译(输入arxivID) [需Latex]": {
 | 
				
			||||||
                "Color": "stop",
 | 
					                "Color": "stop",
 | 
				
			||||||
                "AsButton": False,
 | 
					                "AsButton": False,
 | 
				
			||||||
                # "AdvancedArgs": True,
 | 
					                "AdvancedArgs": True,
 | 
				
			||||||
                # "ArgsReminder": "",
 | 
					                "ArgsReminder": 
 | 
				
			||||||
 | 
					                    "如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 "+ 
 | 
				
			||||||
 | 
					                    "例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " + 'If the term "agent" is used in this section, it should be translated to "智能体". ',
 | 
				
			||||||
 | 
					                "Function": HotReload(Latex翻译中文并重新编译PDF)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        function_plugins.update({
 | 
				
			||||||
 | 
					            "本地论文翻译(上传Latex压缩包) [需Latex]": {
 | 
				
			||||||
 | 
					                "Color": "stop",
 | 
				
			||||||
 | 
					                "AsButton": False,
 | 
				
			||||||
 | 
					                "AdvancedArgs": True,
 | 
				
			||||||
 | 
					                "ArgsReminder": 
 | 
				
			||||||
 | 
					                    "如果有必要, 请在此处给出自定义翻译命令, 解决部分词汇翻译不准确的问题。 "+ 
 | 
				
			||||||
 | 
					                    "例如当单词'agent'翻译不准确时, 请尝试把以下指令复制到高级参数区: " + 'If the term "agent" is used in this section, it should be translated to "智能体". ',
 | 
				
			||||||
                "Function": HotReload(Latex翻译中文并重新编译PDF)
 | 
					                "Function": HotReload(Latex翻译中文并重新编译PDF)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
    except:
 | 
					    except:
 | 
				
			||||||
        print('Load function plugin failed')
 | 
					        print('Load function plugin failed')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    try:
 | 
					    # try:
 | 
				
			||||||
        from crazy_functions.虚空终端 import 终端
 | 
					    #     from crazy_functions.虚空终端 import 终端
 | 
				
			||||||
        function_plugins.update({
 | 
					    #     function_plugins.update({
 | 
				
			||||||
            "超级终端": {
 | 
					    #         "超级终端": {
 | 
				
			||||||
                "Color": "stop",
 | 
					    #             "Color": "stop",
 | 
				
			||||||
                "AsButton": False,
 | 
					    #             "AsButton": False,
 | 
				
			||||||
                # "AdvancedArgs": True,
 | 
					    #             # "AdvancedArgs": True,
 | 
				
			||||||
                # "ArgsReminder": "",
 | 
					    #             # "ArgsReminder": "",
 | 
				
			||||||
                "Function": HotReload(终端)
 | 
					    #             "Function": HotReload(终端)
 | 
				
			||||||
            }
 | 
					    #         }
 | 
				
			||||||
        })
 | 
					    #     })
 | 
				
			||||||
    except:
 | 
					    # except:
 | 
				
			||||||
        print('Load function plugin failed')
 | 
					    #     print('Load function plugin failed')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return function_plugins
 | 
					    return function_plugins
 | 
				
			||||||
 | 
				
			|||||||
@ -1,12 +1,13 @@
 | 
				
			|||||||
from toolbox import update_ui, trimmed_format_exc, get_conf, objdump, objload, promote_file_to_downloadzone
 | 
					from toolbox import update_ui, trimmed_format_exc, get_conf, objdump, objload, promote_file_to_downloadzone
 | 
				
			||||||
from toolbox import CatchException, report_execption, update_ui_lastest_msg, zip_result, gen_time_str
 | 
					from toolbox import CatchException, report_execption, update_ui_lastest_msg, zip_result, gen_time_str
 | 
				
			||||||
 | 
					from functools import partial
 | 
				
			||||||
import glob, os, requests, time
 | 
					import glob, os, requests, time
 | 
				
			||||||
pj = os.path.join
 | 
					pj = os.path.join
 | 
				
			||||||
ARXIV_CACHE_DIR = os.path.expanduser(f"~/arxiv_cache/")
 | 
					ARXIV_CACHE_DIR = os.path.expanduser(f"~/arxiv_cache/")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# =================================== 工具函数 ===============================================
 | 
					# =================================== 工具函数 ===============================================
 | 
				
			||||||
专业词汇声明  = 'If the term "agent" is used in this section, it should be translated to "智能体". '
 | 
					专业词汇声明  = 'If the term "agent" is used in this section, it should be translated to "智能体". '
 | 
				
			||||||
def switch_prompt(pfg, mode):
 | 
					def switch_prompt(pfg, mode, more_requirement):
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Generate prompts and system prompts based on the mode for proofreading or translating.
 | 
					    Generate prompts and system prompts based on the mode for proofreading or translating.
 | 
				
			||||||
    Args:
 | 
					    Args:
 | 
				
			||||||
@ -25,7 +26,7 @@ def switch_prompt(pfg, mode):
 | 
				
			|||||||
                        f"\n\n{frag}" for frag in pfg.sp_file_contents]
 | 
					                        f"\n\n{frag}" for frag in pfg.sp_file_contents]
 | 
				
			||||||
        sys_prompt_array = ["You are a professional academic paper writer." for _ in range(n_split)]
 | 
					        sys_prompt_array = ["You are a professional academic paper writer." for _ in range(n_split)]
 | 
				
			||||||
    elif mode == 'translate_zh':
 | 
					    elif mode == 'translate_zh':
 | 
				
			||||||
        inputs_array = [r"Below is a section from an English academic paper, translate it into Chinese. " + 专业词汇声明 + 
 | 
					        inputs_array = [r"Below is a section from an English academic paper, translate it into Chinese. " + more_requirement + 
 | 
				
			||||||
                        r"Do not modify any latex command such as \section, \cite, \begin, \item and equations. " + 
 | 
					                        r"Do not modify any latex command such as \section, \cite, \begin, \item and equations. " + 
 | 
				
			||||||
                        r"Answer me only with the translated text:" + 
 | 
					                        r"Answer me only with the translated text:" + 
 | 
				
			||||||
                        f"\n\n{frag}" for frag in pfg.sp_file_contents]
 | 
					                        f"\n\n{frag}" for frag in pfg.sp_file_contents]
 | 
				
			||||||
@ -79,7 +80,7 @@ def arxiv_download(chatbot, history, txt):
 | 
				
			|||||||
            os.makedirs(translation_dir)
 | 
					            os.makedirs(translation_dir)
 | 
				
			||||||
        target_file = pj(translation_dir, 'translate_zh.pdf')
 | 
					        target_file = pj(translation_dir, 'translate_zh.pdf')
 | 
				
			||||||
        if os.path.exists(target_file):
 | 
					        if os.path.exists(target_file):
 | 
				
			||||||
            promote_file_to_downloadzone(target_file)
 | 
					            promote_file_to_downloadzone(target_file, rename_file=None, chatbot=chatbot)
 | 
				
			||||||
            return target_file
 | 
					            return target_file
 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
    def is_float(s):
 | 
					    def is_float(s):
 | 
				
			||||||
@ -88,8 +89,10 @@ def arxiv_download(chatbot, history, txt):
 | 
				
			|||||||
            return True
 | 
					            return True
 | 
				
			||||||
        except ValueError:
 | 
					        except ValueError:
 | 
				
			||||||
            return False
 | 
					            return False
 | 
				
			||||||
    if ('.' in txt) and ('/' not in txt) and is_float(txt):
 | 
					    if ('.' in txt) and ('/' not in txt) and is_float(txt): # is arxiv ID
 | 
				
			||||||
        txt = 'https://arxiv.org/abs/' + txt
 | 
					        txt = 'https://arxiv.org/abs/' + txt
 | 
				
			||||||
 | 
					    if ('.' in txt) and ('/' not in txt) and is_float(txt[:10]): # is arxiv ID
 | 
				
			||||||
 | 
					        txt = 'https://arxiv.org/abs/' + txt[:10]
 | 
				
			||||||
    if not txt.startswith('https://arxiv.org'): 
 | 
					    if not txt.startswith('https://arxiv.org'): 
 | 
				
			||||||
        return txt, None
 | 
					        return txt, None
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
@ -177,7 +180,8 @@ def Latex英文纠错加PDF对比(txt, llm_kwargs, plugin_kwargs, chatbot, histo
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # <-------------- if merge_translate_zh is already generated, skip gpt req ------------->
 | 
					    # <-------------- if merge_translate_zh is already generated, skip gpt req ------------->
 | 
				
			||||||
    if not os.path.exists(project_folder + '/merge_proofread.tex'):
 | 
					    if not os.path.exists(project_folder + '/merge_proofread.tex'):
 | 
				
			||||||
        yield from Latex精细分解与转化(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, mode='proofread_latex', switch_prompt=switch_prompt)
 | 
					        yield from Latex精细分解与转化(file_manifest, project_folder, llm_kwargs, plugin_kwargs, 
 | 
				
			||||||
 | 
					                                chatbot, history, system_prompt, mode='proofread_latex', switch_prompt=switch_prompt)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # <-------------- compile PDF ------------->
 | 
					    # <-------------- compile PDF ------------->
 | 
				
			||||||
@ -208,6 +212,10 @@ def Latex翻译中文并重新编译PDF(txt, llm_kwargs, plugin_kwargs, chatbot,
 | 
				
			|||||||
        "对整个Latex项目进行翻译, 生成中文PDF。函数插件贡献者: Binary-Husky。注意事项: 此插件Windows支持最佳,Linux下必须使用Docker安装,详见项目主README.md。目前仅支持GPT3.5/GPT4,其他模型转化效果未知。目前对机器学习类文献转化效果最好,其他类型文献转化效果未知。"])
 | 
					        "对整个Latex项目进行翻译, 生成中文PDF。函数插件贡献者: Binary-Husky。注意事项: 此插件Windows支持最佳,Linux下必须使用Docker安装,详见项目主README.md。目前仅支持GPT3.5/GPT4,其他模型转化效果未知。目前对机器学习类文献转化效果最好,其他类型文献转化效果未知。"])
 | 
				
			||||||
    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
					    yield from update_ui(chatbot=chatbot, history=history) # 刷新界面
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # <-------------- more requirements ------------->
 | 
				
			||||||
 | 
					    if ("advanced_arg" in plugin_kwargs) and (plugin_kwargs["advanced_arg"] == ""): plugin_kwargs.pop("advanced_arg")
 | 
				
			||||||
 | 
					    more_req = plugin_kwargs.get("advanced_arg", "")
 | 
				
			||||||
 | 
					    _switch_prompt_ = partial(switch_prompt, more_requirement=more_req)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # <-------------- check deps ------------->
 | 
					    # <-------------- check deps ------------->
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
@ -255,11 +263,12 @@ def Latex翻译中文并重新编译PDF(txt, llm_kwargs, plugin_kwargs, chatbot,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # <-------------- if merge_translate_zh is already generated, skip gpt req ------------->
 | 
					    # <-------------- if merge_translate_zh is already generated, skip gpt req ------------->
 | 
				
			||||||
    if not os.path.exists(project_folder + '/merge_translate_zh.tex'):
 | 
					    if not os.path.exists(project_folder + '/merge_translate_zh.tex'):
 | 
				
			||||||
        yield from Latex精细分解与转化(file_manifest, project_folder, llm_kwargs, plugin_kwargs, chatbot, history, system_prompt, mode='translate_zh', switch_prompt=switch_prompt)
 | 
					        yield from Latex精细分解与转化(file_manifest, project_folder, llm_kwargs, plugin_kwargs, 
 | 
				
			||||||
 | 
					                                chatbot, history, system_prompt, mode='translate_zh', switch_prompt=_switch_prompt_)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # <-------------- compile PDF ------------->
 | 
					    # <-------------- compile PDF ------------->
 | 
				
			||||||
    success = yield from 编译Latex(chatbot, history, main_file_original='merge', main_file_modified='merge_translate_zh', 
 | 
					    success = yield from 编译Latex(chatbot, history, main_file_original='merge', main_file_modified='merge_translate_zh', mode='translate_zh', 
 | 
				
			||||||
                             work_folder_original=project_folder, work_folder_modified=project_folder, work_folder=project_folder)
 | 
					                             work_folder_original=project_folder, work_folder_modified=project_folder, work_folder=project_folder)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # <-------------- zip PDF ------------->
 | 
					    # <-------------- zip PDF ------------->
 | 
				
			||||||
 | 
				
			|||||||
@ -403,7 +403,7 @@ class LatexPaperSplit():
 | 
				
			|||||||
    def __init__(self) -> None:
 | 
					    def __init__(self) -> None:
 | 
				
			||||||
        self.nodes = None
 | 
					        self.nodes = None
 | 
				
			||||||
        self.msg = "{\\scriptsize\\textbf{警告:该PDF由GPT-Academic开源项目调用大语言模型+Latex翻译插件一键生成," + \
 | 
					        self.msg = "{\\scriptsize\\textbf{警告:该PDF由GPT-Academic开源项目调用大语言模型+Latex翻译插件一键生成," + \
 | 
				
			||||||
            "版权归原文作者所有。翻译内容可靠性无任何保障,请仔细鉴别并以原文为准。" + \
 | 
					            "版权归原文作者所有。翻译内容可靠性无保障,请仔细鉴别并以原文为准。" + \
 | 
				
			||||||
            "项目Github地址 \\url{https://github.com/binary-husky/gpt_academic/}。"
 | 
					            "项目Github地址 \\url{https://github.com/binary-husky/gpt_academic/}。"
 | 
				
			||||||
        # 请您不要删除或修改这行警告,除非您是论文的原作者(如果您是论文原作者,欢迎加REAME中的QQ联系开发者)
 | 
					        # 请您不要删除或修改这行警告,除非您是论文的原作者(如果您是论文原作者,欢迎加REAME中的QQ联系开发者)
 | 
				
			||||||
        self.msg_declare = "为了防止大语言模型的意外谬误产生扩散影响,禁止移除或修改此警告。}}\\\\" 
 | 
					        self.msg_declare = "为了防止大语言模型的意外谬误产生扩散影响,禁止移除或修改此警告。}}\\\\" 
 | 
				
			||||||
@ -623,7 +623,7 @@ def compile_latex_with_timeout(command, timeout=60):
 | 
				
			|||||||
        return False
 | 
					        return False
 | 
				
			||||||
    return True
 | 
					    return True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_folder_original, work_folder_modified, work_folder):
 | 
					def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_folder_original, work_folder_modified, work_folder, mode='default'):
 | 
				
			||||||
    import os, time
 | 
					    import os, time
 | 
				
			||||||
    current_dir = os.getcwd()
 | 
					    current_dir = os.getcwd()
 | 
				
			||||||
    n_fix = 1
 | 
					    n_fix = 1
 | 
				
			||||||
@ -634,6 +634,7 @@ def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_f
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    while True:
 | 
					    while True:
 | 
				
			||||||
        import os
 | 
					        import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # https://stackoverflow.com/questions/738755/dont-make-me-manually-abort-a-latex-compile-when-theres-an-error
 | 
					        # https://stackoverflow.com/questions/738755/dont-make-me-manually-abort-a-latex-compile-when-theres-an-error
 | 
				
			||||||
        yield from update_ui_lastest_msg(f'尝试第 {n_fix}/{max_try} 次编译, 编译原始PDF ...', chatbot, history)   # 刷新Gradio前端界面
 | 
					        yield from update_ui_lastest_msg(f'尝试第 {n_fix}/{max_try} 次编译, 编译原始PDF ...', chatbot, history)   # 刷新Gradio前端界面
 | 
				
			||||||
        os.chdir(work_folder_original); ok = compile_latex_with_timeout(f'pdflatex -interaction=batchmode -file-line-error {main_file_original}.tex'); os.chdir(current_dir)
 | 
					        os.chdir(work_folder_original); ok = compile_latex_with_timeout(f'pdflatex -interaction=batchmode -file-line-error {main_file_original}.tex'); os.chdir(current_dir)
 | 
				
			||||||
@ -655,6 +656,7 @@ def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_f
 | 
				
			|||||||
            os.chdir(work_folder_original); ok = compile_latex_with_timeout(f'pdflatex -interaction=batchmode -file-line-error {main_file_original}.tex'); os.chdir(current_dir)
 | 
					            os.chdir(work_folder_original); ok = compile_latex_with_timeout(f'pdflatex -interaction=batchmode -file-line-error {main_file_original}.tex'); os.chdir(current_dir)
 | 
				
			||||||
            os.chdir(work_folder_modified); ok = compile_latex_with_timeout(f'pdflatex -interaction=batchmode -file-line-error {main_file_modified}.tex'); os.chdir(current_dir)
 | 
					            os.chdir(work_folder_modified); ok = compile_latex_with_timeout(f'pdflatex -interaction=batchmode -file-line-error {main_file_modified}.tex'); os.chdir(current_dir)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if mode!='translate_zh':
 | 
				
			||||||
                yield from update_ui_lastest_msg(f'尝试第 {n_fix}/{max_try} 次编译, 使用latexdiff生成论文转化前后对比 ...', chatbot, history) # 刷新Gradio前端界面
 | 
					                yield from update_ui_lastest_msg(f'尝试第 {n_fix}/{max_try} 次编译, 使用latexdiff生成论文转化前后对比 ...', chatbot, history) # 刷新Gradio前端界面
 | 
				
			||||||
                print(    f'latexdiff --encoding=utf8 --append-safecmd=subfile {work_folder_original}/{main_file_original}.tex  {work_folder_modified}/{main_file_modified}.tex --flatten > {work_folder}/merge_diff.tex')
 | 
					                print(    f'latexdiff --encoding=utf8 --append-safecmd=subfile {work_folder_original}/{main_file_original}.tex  {work_folder_modified}/{main_file_modified}.tex --flatten > {work_folder}/merge_diff.tex')
 | 
				
			||||||
                ok = compile_latex_with_timeout(f'latexdiff --encoding=utf8 --append-safecmd=subfile {work_folder_original}/{main_file_original}.tex  {work_folder_modified}/{main_file_modified}.tex --flatten > {work_folder}/merge_diff.tex')
 | 
					                ok = compile_latex_with_timeout(f'latexdiff --encoding=utf8 --append-safecmd=subfile {work_folder_original}/{main_file_original}.tex  {work_folder_modified}/{main_file_modified}.tex --flatten > {work_folder}/merge_diff.tex')
 | 
				
			||||||
@ -684,7 +686,7 @@ def 编译Latex(chatbot, history, main_file_original, main_file_modified, work_f
 | 
				
			|||||||
            result_pdf = pj(work_folder_modified, f'{main_file_modified}.pdf')
 | 
					            result_pdf = pj(work_folder_modified, f'{main_file_modified}.pdf')
 | 
				
			||||||
            if os.path.exists(pj(work_folder, '..', 'translation')):
 | 
					            if os.path.exists(pj(work_folder, '..', 'translation')):
 | 
				
			||||||
                shutil.copyfile(result_pdf, pj(work_folder, '..', 'translation', 'translate_zh.pdf'))
 | 
					                shutil.copyfile(result_pdf, pj(work_folder, '..', 'translation', 'translate_zh.pdf'))
 | 
				
			||||||
            promote_file_to_downloadzone(result_pdf, chatbot)
 | 
					            promote_file_to_downloadzone(result_pdf, rename_file=None, chatbot=chatbot)
 | 
				
			||||||
            return True # 成功啦
 | 
					            return True # 成功啦
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            if n_fix>=max_try: break
 | 
					            if n_fix>=max_try: break
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
from toolbox import CatchException, update_ui
 | 
					from toolbox import CatchException, update_ui, promote_file_to_downloadzone
 | 
				
			||||||
from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive
 | 
					from .crazy_utils import request_gpt_model_in_new_thread_with_ui_alive
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -29,9 +29,8 @@ def write_chat_to_file(chatbot, history=None, file_name=None):
 | 
				
			|||||||
        for h in history:
 | 
					        for h in history:
 | 
				
			||||||
            f.write("\n>>>" + h)
 | 
					            f.write("\n>>>" + h)
 | 
				
			||||||
        f.write('</code>')
 | 
					        f.write('</code>')
 | 
				
			||||||
    res = '对话历史写入:' + os.path.abspath(f'./gpt_log/{file_name}')
 | 
					    promote_file_to_downloadzone(f'./gpt_log/{file_name}', rename_file=file_name, chatbot=chatbot)
 | 
				
			||||||
    print(res)
 | 
					    return '对话历史写入:' + os.path.abspath(f'./gpt_log/{file_name}')
 | 
				
			||||||
    return res
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
def gen_file_preview(file_name):
 | 
					def gen_file_preview(file_name):
 | 
				
			||||||
    try:
 | 
					    try:
 | 
				
			||||||
 | 
				
			|||||||
@ -444,8 +444,8 @@ def promote_file_to_downloadzone(file, rename_file=None, chatbot=None):
 | 
				
			|||||||
    import shutil
 | 
					    import shutil
 | 
				
			||||||
    if rename_file is None: rename_file = f'{gen_time_str()}-{os.path.basename(file)}'
 | 
					    if rename_file is None: rename_file = f'{gen_time_str()}-{os.path.basename(file)}'
 | 
				
			||||||
    new_path = os.path.join(f'./gpt_log/', rename_file)
 | 
					    new_path = os.path.join(f'./gpt_log/', rename_file)
 | 
				
			||||||
    if os.path.exists(new_path): os.remove(new_path)
 | 
					    if os.path.exists(new_path) and not os.path.samefile(new_path, file): os.remove(new_path)
 | 
				
			||||||
    shutil.copyfile(file, new_path)
 | 
					    if not os.path.exists(new_path): shutil.copyfile(file, new_path)
 | 
				
			||||||
    if chatbot:
 | 
					    if chatbot:
 | 
				
			||||||
        chatbot._cookies.update({'file_to_promote': [new_path]})
 | 
					        chatbot._cookies.update({'file_to_promote': [new_path]})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user