async def translate(context): """ PagerMaid universal translator. """ translator = Translator() reply = await context.get_reply_message() message = context.arguments ap_lang = config['application_language'] if message: pass elif reply: message = reply.text else: await context.edit(lang('arg_error')) return try: if not silent: await context.edit(lang('translate_processing')) try: result = translator.translate(clear_emojis(message), dest=ap_lang) except: from translate import Translator as trans result = trans(to_lang=ap_lang.replace('zh-cn', 'zh')).translate( clear_emojis(message)) except ValueError: await context.edit(lang('translate_ValueError')) return try: source_lang = result.src source_text = result.origin trans_lang = result.dest except AttributeError: await context.edit(lang('google_connection_error')) return result = f"**{lang('translate_hits')}**\n{lang('translate_original_lang')}: {source_lang}\n{source_text} -> {result.text}" if len(result) > 4096: await context.edit(lang('translate_tg_limit_uploading_file')) await attach_log(result, context.chat_id, "translation.txt", context.id) return await context.edit(result) if len(result) <= 4096: await log( f"{lang('translate_get')}: `{source_text}` \n{lang('translate_from')} {source_lang} {lang('translate_to')} {trans_lang}" ) else: await log( f"{lang('translate_get')}{translate('translate_from')} {source_lang} {lang('translate_to')} {trans_lang}." )
async def chatbot(context): try: text = await obtain_message(context) except ValueError: await context.edit(lang('msg_ValueError')) return text = clear_emojis(text) text = quote(text) try: req_data = requests.get( f"https://api.affiliateplus.xyz/api/chatbot?message={text}" f"&botname=pagermaid&ownername=xtao-labs&user=20") except Exception as e: await context.edit('出错了呜呜呜 ~ 无法访问 API ') return if not req_data.status_code == 200: return await context.edit('出错了呜呜呜 ~ 无法访问 API ') try: req_data = json.loads(req_data.text) req_data = req_data["message"] except Exception as e: await context.edit("出错了呜呜呜 ~ 解析JSON时发生了错误。") return await context.edit(req_data)
async def translate(context): """ PagerMaid universal translator. """ translator = Translator() reply = await context.get_reply_message() message = context.arguments lang = config['application_language'] if message: pass elif reply: message = reply.text else: await context.edit("Invalid argument.") return try: await context.edit("Generating translation . . .") result = translator.translate(clear_emojis(message), dest=lang) except ValueError: await context.edit("Language not found, please correct the error in the config file.") return source_lang = LANGUAGES[f'{result.src.lower()}'] trans_lang = LANGUAGES[f'{result.dest.lower()}'] result = f"**Translated** from {source_lang.title()}:\n{result.text}" if len(result) > 4096: await context.edit("Output exceeded limit, attaching file.") await attach_log(result, context.chat_id, "translation.txt", context.id) return await context.edit(result) if len(result) <= 4096: await log(f"Translated `{message}` from {source_lang} to {trans_lang}.") else: await log(f"Translated message from {source_lang} to {trans_lang}.")
async def translate(context): """ PagerMaid universal translator. """ translator = Translator() reply = await context.get_reply_message() message = context.arguments lang = config['application_language'] if message: pass elif reply: message = reply.text else: await context.edit("出错了呜呜呜 ~ 无效的参数。") return try: await context.edit("正在生成翻译中 . . .") result = translator.translate(clear_emojis(message), dest=lang) except ValueError: await context.edit("出错了呜呜呜 ~ 找不到目标语言,请更正配置文件中的错误。") return source_lang = LANGUAGES[f'{result.src.lower()}'] trans_lang = LANGUAGES[f'{result.dest.lower()}'] result = f"**文本翻译** 源语言 {source_lang.title()}:\n{result.text}" if len(result) > 4096: await context.edit("输出超出 TG 限制,正在尝试上传文件。") await attach_log(result, context.chat_id, "translation.txt", context.id) return await context.edit(result) if len(result) <= 4096: await log(f"把 `{message}` 从 {source_lang} 翻译到了 {trans_lang}") else: await log(f"把一条消息从 {source_lang} 翻译到了 {trans_lang}.")
async def wiki(context): translator = Translator() lang = config['application_language'] await context.edit("获取中 . . .") try: message = await obtain_message(context) except ValueError: await context.edit("出错了呜呜呜 ~ 无效的参数。") return try: wiki_json = json.loads( requests.get( "https://zh.wikipedia.org/w/api.php?action=query&list=search&format=json&formatversion=2&srsearch=" + message).content.decode("utf-8")) except: await context.edit("出错了呜呜呜 ~ 无法访问到维基百科。") return if not len(wiki_json['query']['search']) == 0: wiki_title = wiki_json['query']['search'][0]['title'] wiki_content = wiki_json['query']['search'][0]['snippet'].replace( '<span class=\"searchmatch\">', '**').replace('</span>', '**') wiki_time = wiki_json['query']['search'][0]['timestamp'].replace( 'T', ' ').replace('Z', ' ') try: await context.edit("正在生成翻译中 . . .") wiki_content = translator.translate(clear_emojis(wiki_content), dest=lang) message = '词条: [' + wiki_title + '](https://zh.wikipedia.org/zh-cn/' + wiki_title + ')\n\n' + wiki_content.text + '...\n\n此词条最后修订于 ' + wiki_time except ValueError: await context.edit("出错了呜呜呜 ~ 找不到目标语言,请更正配置文件中的错误。") return await context.edit(message) else: await context.edit("没有匹配到相关词条")
async def tx_t(context): """ PagerMaid universal translator. """ reply = await context.get_reply_message() message = context.arguments lang = 'zh' if message: pass elif reply: message = reply.text else: await context.edit("出错了呜呜呜 ~ 无效的参数。") return try: await context.edit("正在生成翻译中 . . .") tx_json = json.loads( requests.get("https://xtaolink.cn/git/m/t.php?lang=" + lang + '&text=' + clear_emojis(message)).content.decode("utf-8")) if not tx_json['msg'] == 'ok': context.edit("出错了呜呜呜 ~ 翻译出错") return True else: result = '文本翻译:\n' + tx_json['data']['target_text'] except ValueError: await context.edit("出错了呜呜呜 ~ 找不到目标语言,请更正配置文件中的错误。") return if len(result) > 4096: await context.edit("输出超出 TG 限制,正在尝试上传文件。") await attach_log(result, context.chat_id, "translation.txt", context.id) return await context.edit(result)
async def tx_t(context): """ PagerMaid universal translator. """ reply = await context.get_reply_message() message = context.arguments lang = 'zh' USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0" headers = {"user-agent": USER_AGENT} api_lang = [ 'zh', 'en', 'jp', 'kr', 'fr', 'es', 'it', 'de', 'tr', 'ru', 'pt', 'vi', 'id', 'ms', 'th' ] if reply: message = reply.text if context.parameter: if re.search(r'[a-z]{2}', context.parameter[0]): if context.parameter[0] in api_lang: lang = context.parameter[0] else: await context.edit("指定语言未支持,使用默认语言") else: await context.edit("未指定语言,使用默认语言") elif context.parameter: message = context.parameter[0] try: if re.search(r'[a-z]{2}', context.parameter[1]): if context.parameter[1] in api_lang: lang = context.parameter[1] else: await context.edit("指定语言未支持,使用默认语言") except IndexError: await context.edit("未指定语言,使用默认语言") else: await context.edit("出错了呜呜呜 ~ 无效的参数。") return try: await context.edit("正在生成翻译中 . . .") tx_json = json.loads( requests.get("https://xtaolink.cn/git/m/t.php?lang=" + lang + '&text=' + clear_emojis(message), headers=headers).content.decode("utf-8")) if not tx_json['msg'] == 'ok': context.edit("出错了呜呜呜 ~ 翻译出错") return True else: result = '文本翻译:\n' + tx_json['data']['target_text'] except ValueError: await context.edit("出错了呜呜呜 ~ 找不到目标语言,请更正配置文件中的错误。") return if len(result) > 4096: await context.edit("输出超出 TG 限制,正在尝试上传文件。") await attach_log(result, context.chat_id, "translation.txt", context.id) return await context.edit(result)
async def translate(context): """ PagerMaid universal translator. """ reply = await context.get_reply_message() message = context.arguments ap_lang = config['application_language'] if message: pass elif reply: message = reply.text else: await context.edit(lang('arg_error')) return source_text = clear_emojis(message) try: if not silent: await context.edit(lang('translate_processing')) try: from translators.apis import TranslatorError from translators import google except ModuleNotFoundError: await context.edit(lang('translate_ImportError')) return try: result = google(source_text, to_language=ap_lang.replace("zh-cn", "zh-CN")) except TranslatorError: return await context.edit(lang('translate_ValueError')) except ValueError: return await context.edit(lang('translate_ValueError')) if not result: return await context.edit(lang('google_connection_error')) result = f"**{lang('translate_hits')}**\n" \ f"{source_text} -> {result}" if len(result) > 4096: await context.edit(lang('translate_tg_limit_uploading_file')) await attach_log(result, context.chat_id, "translation.txt", context.id) return await context.edit(result) if len(result) <= 4096: await log(f"{lang('translate_get')}: `{source_text}` \n" f"{lang('translate_to')} {ap_lang}") else: await log(f"{lang('translate_get')} {lang('translate_to')} {ap_lang}.")
async def wiki(context): lang = config['application_language'].replace('zh-cn', 'zh') await context.edit("获取中 . . .") try: message = await obtain_message(context) except ValueError: await context.edit("出错了呜呜呜 ~ 无效的参数。") return try: wiki_json = json.loads( requests.get( "https://zh.wikipedia.org/w/api.php?action=query&list=search&format=json" "&formatversion=2&srsearch=" + message).content.decode("utf-8")) except: await context.edit("出错了呜呜呜 ~ 无法访问到维基百科。") return if not len(wiki_json['query']['search']) == 0: wiki_title = wiki_json['query']['search'][0]['title'] wiki_content = wiki_json['query']['search'][0]['snippet'].replace( '<span class=\"searchmatch\">', '**').replace('</span>', '**') wiki_time = wiki_json['query']['search'][0]['timestamp'].replace( 'T', ' ').replace('Z', ' ') try: await context.edit("正在生成翻译中 . . .") USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0" headers = {"user-agent": USER_AGENT} wiki_content = json.loads( requests.get("https://xtaolink.cn/git/m/t.php?lang=" + lang + '&text=' + clear_emojis(wiki_content), headers=headers).content.decode( "utf-8"))['data']['target_text'] message = '词条: [' + wiki_title + '](https://zh.wikipedia.org/zh-cn/' + wiki_title + ')\n\n' + \ wiki_content + '...\n\n此词条最后修订于 ' + wiki_time except ValueError: await context.edit("出错了呜呜呜 ~ 找不到目标语言,请更正配置文件中的错误。") return await context.edit(message) else: await context.edit("没有匹配到相关词条")