def totranslate(update: Update, context: CallbackContext): message = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if message.reply_to_message: args = update.effective_message.text.split(None, 1) if message.reply_to_message.text: text = message.reply_to_message.text elif message.reply_to_message.caption: text = message.reply_to_message.caption try: source_lang = args[1].split(None, 1)[0] except (IndexError, AttributeError): source_lang = "az" else: args = update.effective_message.text.split(None, 2) text = args[2] source_lang = args[1] if source_lang.count('-') == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count('-') == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang is None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') trl = google_translator() if source_lang is None: detection = trl.detect(text) trans_str = trl.translate(text, lang_tgt=dest_lang) return message.reply_text( f"`{detection[0]}` dilindən `{dest_lang}` dilinə tərcümə edildi:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN) else: trans_str = trl.translate( text, lang_tgt=dest_lang, lang_src=source_lang) message.reply_text( f"`{source_lang}` dilindən `{dest_lang}` dilinə tərcümə edildi:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text( "Tərcümə ediləcək mətnə yanıt ver.\n\n" "Məsələn: `/tr en-ru` İngilis dilindən Rus dilinə tərcümə edir\n" "Və ya: `/tr en` İstənilən mətni İngilis dilinə tərcümə edir.\n" "[Dil kodları](t.me/OnePunchSupport/12823)", parse_mode="markdown", disable_web_page_preview=True) except ValueError: update.effective_message.reply_text( "Dil tapılmadı!") else: return
def totranslate(bot: Bot, update: Update): msg = update.effective_message chat_id = update.effective_chat.id """ lang = str("af,am,ar,az,be,bg,bn,bs,ca,ceb,co,cs,cy,da,de,el,en,eo,es,et,eu,fa,fi,fr,fy,ga,gd,gl,gu,ha,haw,hi,hmn,hr,ht,hu,hy,id,ig,is,it,iw,ja,jw,ka,kk,km,kn,ko,ku,ky,la,lb,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,no,ny,pa,pl,ps,pt,ro,ru,sd,si,sk,sl,sm,sn,so,sq,sr,st,su,sv,sw,ta,te,tg,th,tl,tr,uk,ur,uz,vi,xh,yi,yo,zh,zh_CN,zh_TW,zu".split(",")) try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) try: target = args[1].split(None, 1)[0] except: target = args[1] try: target2 = args[1].split(None, 2)[1] if target2 not in lang: target2 = None else: target = args[1].split(None, 2)[0] target2 = args[1].split(None, 2)[1] except: target2 = None text = msg.reply_to_message.text message = update.effective_message trl = Translator() if target2 == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=target) if tekstr.pronunciation == None: return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(detection.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Translated from `{}` to `{}`:\n*Characters:*\n`{}`\n*Text:*\n`{}`".format(detection.lang, target, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=target2, src=target) if tekstr.pronunciation == None: return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Translated from `{}` to `{}`:\n*Characters:*\n`{}`\n*Text:*\n`{}`".format(target, target2, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) target = args[1] try: target2 = args[2].split(None, 1)[0] if target2 not in lang: target2 = None text = args[2] else: target2 = args[2].split(None, 1)[0] text = args[2].split(None, 1)[1] except: target2 = None text = args[2] message = update.effective_message trl = Translator() if target2 == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=target) if tekstr.pronunciation == None: return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(detection.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Translated from `{}` to `{}`:\n*Characters:*\n`{}`\n*Text:*\n`{}`".format(detection.lang, target, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=target2, src=target) if tekstr.pronunciation == None: return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Translated from `{}` to `{}`:\n*Characters:*\n`{}`\n*Text:*\n`{}`".format(target, target2, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) """ try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) target2 = None try: target = args[1].split(None, 1)[0] except: target = args[1] if "-" in target: target2 = target.split("-")[1] target = target.split("-")[0] text = msg.reply_to_message.text #text = deEmojify(text) exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') message = update.effective_message trl = Translator() if target2 == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=target) if tekstr.pronunciation == None: return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( detection.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( detection.lang, target, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=target2, src=target) if tekstr.pronunciation == None: return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( target, target2, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) target = args[1] text = args[2] #text = deEmojify(text) exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') target2 = None if "-" in target: target2 = target.split("-")[1] target = target.split("-")[0] message = update.effective_message trl = Translator() if target2 == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=target) return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( detection.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) #if tekstr.pronunciation == None: # return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(detection.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) #else: # return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(detection.lang, target, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=target2, src=target) message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) #if tekstr.pronunciation == None: # return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) #else: # return message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(target, target2, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text( "Reply to messages or write messages from other languages for translating into the intended language\n\nExample: `/tl en-ja` to translate from English to Japanese\nOr use: `/tl ja` for automatic detection and translating it into Japanese.", parse_mode="markdown") except ValueError: update.effective_message.reply_text( "The intended language is not found!") else: return
def totranslate(bot: Bot, update: Update): msg = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) text = msg.reply_to_message.text message = update.effective_message dest_lang = None try: source_lang = args[1].split(None, 1)[0] except: source_lang = "en" if source_lang.count('-') == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count('-') == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang == None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') if source_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=dest_lang) return message.reply_text( f"Translated from `{detection.lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text(f"Translated from `{source_lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) message = update.effective_message source_lang = args[1] text = args[2] exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') dest_lang = None temp_source_lang = source_lang if temp_source_lang.count('-') == 2: for lang in problem_lang_code: if lang in temp_source_lang: if temp_source_lang.startswith(lang): dest_lang = temp_source_lang.rsplit("-", 1)[1] source_lang = temp_source_lang.rsplit("-", 1)[0] else: dest_lang = temp_source_lang.split("-", 1)[1] source_lang = temp_source_lang.split("-", 1)[0] elif temp_source_lang.count('-') == 1: for lang in problem_lang_code: if lang in temp_source_lang: dest_lang = None break else: dest_lang = temp_source_lang.split("-")[1] source_lang = temp_source_lang.split("-")[0] if dest_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=source_lang) return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format(detection.lang, source_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text("Translated from `{}` to `{}`:\n`{}`".format(source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) except IndexError: pass except ValueError: update.effective_message.reply_text("The intended language is not found!") else: return
def gtrans(update, context): # Thanks to @Killer_Loli from SaitamaRobot for translate function # Check out the SaitamaRobot translate module here: https://github.com/AnimeKaizoku/SaitamaRobot/blob/master/SaitamaRobot/modules/gtranslator.py msg = update.effective_message problem_lang_code = [key for key in LANGUAGES if "-" in key] try: if msg.reply_to_message: args = update.effective_message.text.split(None, 1) if msg.reply_to_message.text: text = msg.reply_to_message.text elif msg.reply_to_message.caption: text = msg.reply_to_message.caption try: source_lang = args[1].split(None, 1)[0] except (IndexError, AttributeError): source_lang = "en" else: args = update.effective_message.text.split(None, 2) text = args[2] source_lang = args[1] dest_lang = None if source_lang.count("-") == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count("-") == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang is None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, "") trl = google_translator() if source_lang is None: detection = trl.detect(text) trans_str = trl.translate(text, lang_tgt=dest_lang) return msg.reply_text( f"Translated from `{detection[0]}` to `{dest_lang}`:\n*{trans_str}*", parse_mode=ParseMode.MARKDOWN, ) else: trans_str = trl.translate(text, lang_tgt=dest_lang, lang_src=source_lang) msg.reply_text( f"Translated from `{source_lang}` to `{dest_lang}`:\n*{trans_str}*", parse_mode=ParseMode.MARKDOWN, ) except IndexError: update.effective_message.reply_text( "Reply to messages to translate them into the preffered language!\n\n" "Example: `/tr en-de` to translate from English to German\n" "Or use: `/tr de` for auto detection and translating it into German.\n", parse_mode=ParseMode.MARKDOWN, ) except ValueError: update.effective_message.reply_text( "The intended language is not found!") else: return
def contains_emoji(text): for e in UNICODE_EMOJI.keys(): if e in text: return True return False
from discord import Color, Embed from discord.message import Message from os import environ from requests import get from base64 import b64encode from subprocess import run, PIPE from datetime import datetime as t from urllib.parse import quote_plus from configparser import ConfigParser class send_error_message(Exception): pass emoji_unicodes = UNICODE_EMOJI.keys() main_cfg = ConfigParser() main_cfg.read('config.ini') class emojiutils: def __init__(self): pass def import_emoji_function(func): setattr(emojiutils, "emoji_to_url", func) async def wait_for_message(ctx, message,
def totranslate(update: Update, context: CallbackContext): message = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if message.reply_to_message: args = update.effective_message.text.split(None, 1) if message.reply_to_message.text: text = message.reply_to_message.text elif message.reply_to_message.caption: text = message.reply_to_message.caption try: source_lang = args[1].split(None, 1)[0] except (IndexError, AttributeError): source_lang = "en" else: args = update.effective_message.text.split(None, 2) text = args[2] source_lang = args[1] if source_lang.count('-') == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count('-') == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang is None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') trl = google_translator() if source_lang is None: detection = trl.detect(text) trans_str = trl.translate(text, lang_tgt=dest_lang) return message.reply_text( f"Translated from `{detection[0]}` to `{dest_lang}`:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN) else: trans_str = trl.translate(text, lang_tgt=dest_lang, lang_src=source_lang) message.reply_text( f"Translated from `{source_lang}` to `{dest_lang}`:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text( "Reply to messages or write messages from other languages ​​for translating into the intended language\n\n" "Example: `/tr en-ml` to translate from English to Malayalam\n" "Or use: `/tr ml` for automatic detection and translating it into Malayalam.\n" "See [List of Language Codes](t.me/SenkuUpdates/20) for a list of language codes.", parse_mode="markdown", disable_web_page_preview=True) except ValueError: update.effective_message.reply_text( "The intended language is not found!") else: return
# coding: utf8 from __future__ import unicode_literals from spacy.tokens import Doc, Span, Token from spacy.matcher import PhraseMatcher from emoji import UNICODE_EMOJI from .about import __version__ # make sure multi-character emoji don't contain whitespace EMOJI = {e.replace(' ', ''): t for e, t in UNICODE_EMOJI.items()} class Emoji(object): """spaCy v2.0 pipeline component for adding emoji meta data to `Doc` objects. Detects emoji consisting of one or more unicode characters, and can optionally merge multi-char emoji (combined pictures, emoji with skin tone modifiers) into one token. Emoji are matched using spaCy's `PhraseMatcher`, and looked up in the data table provided by the "emoji" package: https://github.com/carpedm20/emoji USAGE: >>> import spacy >>> from spacymoji import Emoji >>> nlp = spacy.load('en') >>> emoji = Emoji(nlp) >>> nlp.add_pipe(emoji, first=True) >>> doc = nlp(u"This is a test 😻 👍🏿") >>> assert doc._.has_emoji == True >>> assert doc[2:5]._.has_emoji == True >>> assert doc[0]._.is_emoji == False
def totranslate(update: Update, context: CallbackContext): message = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if message.reply_to_message: args = update.effective_message.text.split(None, 1) if message.reply_to_message.text: text = message.reply_to_message.text elif message.reply_to_message.caption: text = message.reply_to_message.caption try: source_lang = args[1].split(None, 1)[0] except (IndexError, AttributeError): source_lang = "en" else: args = update.effective_message.text.split(None, 2) text = args[2] source_lang = args[1] if source_lang.count('-') == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count('-') == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang is None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') trl = google_translator() if source_lang is None: detection = trl.detect(text) trans_str = trl.translate(text, lang_tgt=dest_lang) return message.reply_text( f"Translated from `{detection[0]}` to `{dest_lang}`:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN) else: trans_str = trl.translate(text, lang_tgt=dest_lang, lang_src=source_lang) message.reply_text( f"Translated from `{source_lang}` to `{dest_lang}`:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text( "İstədiyiniz dilə tərcümə etmək üçün mesajlara cavab verin və ya başqa dillərdən mesaj yazın\n\n" "Misal: `/ tr en-ml` İngilis dilindən Malayalam dilinə tərcümə etmək\n" "Və ya avtomatik aşkarlamaq və Malayalam dilinə tərcümə etmək üçün: /ml /ml istifadə edin.\n" "See [List of Language Codes](t.me/OnePunchSupport/12823) for a list of language codes.", parse_mode="markdown", disable_web_page_preview=True) except ValueError: update.effective_message.reply_text("İstədiyiniz dil tapılmadı!") else: return
HTML_RE = re.compile(r'<.*?>') URLS_STRING = r"""(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))""" URLS_STRING = r"((?<=[^a-zA-Z0-9])(?:https?\:\/\/|[a-zA-Z0-9]{1,}\.{1}|\b)(?:\w{1,}\.{1}){1,5}(?:com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil|iq|io|ac|ly|sm){1}(?:\/[a-zA-Z0-9]{1,})*)" PHONE_NUMBER_STRING = "[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$" MENTION_STRING = r"""\B\@[A-Za-z0-9_.](?:(?:[A-Za-z0-9_.]|(?:\\.(?!\\.))){0,28}(?:[A-Za-z0-9_.]))?""" HASHTAG_STRING = r"""(?:\#+[\w_]+[\w\'_\-]*[\w_]+)""" EMAIL_STRING = r"""[\w.+-]+@[\w-]+\.(?:[\w-]\.?)+[\w-]""" # Remaining string : includes instagram username with this pattern : toto._.toto ACCENTED_CHARACTERS = 'ÀàÁáÂâÃãÄäÇçÈèÉéÊêËëÌìÍíÎîÏïÑñÒòÓóÔôÕõÖöŠšÚùÛúÜûÙüÝýŸÿŽž' REMAINING_STRING = r"""([A-Za-z0-9%s_](?:(?:[A-Za-z0-9%s_]|(?:\.(?!\.))){0,28}(?:[A-Za-z0-9%s_]))?)|(?:[^\W\d_](?:[^\W\d_]|['\-_])+[^\W\d_])|(?:[+\-]?\d+[,/.:-]\d+[+\-]?)|(?:[\w_]+)|(?:\.(?:\s*\.){1,})|(?:\S)""" % ( ACCENTED_CHARACTERS, ACCENTED_CHARACTERS, ACCENTED_CHARACTERS) PUNCTUATION = '!"$%&\'()*+,-./:;<=>?[\\]^_`{|}~•’@...”“' MERGE_FIELD_STRING = r"""{{.*?}}""" EMOJI_STRING = '[(' + '|'.join( list(UNICODE_EMOJI.keys())[:1035] + list(UNICODE_EMOJI.keys())[1037:]) + ')]+' tokens_types = [ 'token', 'hashtag', 'mention', 'url', 'mail', 'merge_field', 'emoji' ] REGEXP_STRINGS = { 'hashtag': HASHTAG_STRING, 'mention': MENTION_STRING, 'url': URLS_STRING, 'mail': EMAIL_STRING, 'merge_field': MERGE_FIELD_STRING, 'emoji': EMOJI_STRING, 'token': REMAINING_STRING }
import xml.etree.ElementTree as ET import matplotlib.pyplot as plt from datetime import date from emoji import UNICODE_EMOJI from collections import Counter import time #filters out any UNICODE_EMOJI_FILTERED = list(filter(lambda x: 'sign' not in UNICODE_EMOJI.get(x) and 'tone' not in UNICODE_EMOJI.get(x), UNICODE_EMOJI)) #constants contact_number = input("Input the contact name: ") print("Calculating...") #initial states message_sent_count = 0 message_received_count = 0 sundaycount = 0 mondaycount = 0 tuesdaycount = 0 wednesdaycount = 0 thursdaycount = 0 fridaycount = 0 saturdaycount = 0 picture_counter = 0 sent_emoji_counter = 0 received_emoji_counter = 0 twelve_am_count = 0 one_am_count = 0 two_am_count = 0
async def send_username_result(bot, event): try: start = datetime.now() userid = await get_id_from_forward(event) if userid == 0: return result = search_id(userid) if result is None: await event.reply("اطلاعات کاربر در دیتابیس سامانه شکار وجود ندارد ☹️") return end = datetime.now() total_search_time = end - start body = f""" 👤result: {result} ⏰search time: {total_search_time.total_seconds():.3f}s """ await event.reply(body) except: start_point = datetime.now() text = event.message.message string = list(text) for char in string: if char in UNICODE_EMOJI.keys(): raise Exception("emoji in string") if "@" in text: text = str(text).split("@")[-1] await user_search_t(bot, event) is_id = text.isdigit() if is_id: result = search_id(text) if result is None: await event.reply("اطلاعات کاربر در دیتابیس سامانه شکار وجود ندارد ☹️") return else: result = search_username(text) if result is None: await event.reply(user_may_not_exists_text) return end_point = datetime.now() total_search_time = end_point - start_point body = f""" 👤result: {result} ⏰search time: {total_search_time.total_seconds():.3f}s """ await event.reply(body)
def totranslate(bot: Bot, update: Update): msg = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) text = msg.reply_to_message.text message = update.effective_message dest_lang = None try: source_lang = args[1].split(None, 1)[0] except: source_lang = "en" if source_lang.count('-') == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count('-') == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang == None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') trl = Translator() if source_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=dest_lang) return message.reply_text( f"Translated from `{detection.lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( f"Translated from `{source_lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) message = update.effective_message source_lang = args[1] text = args[2] exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') dest_lang = None temp_source_lang = source_lang if temp_source_lang.count('-') == 2: for lang in problem_lang_code: if lang in temp_source_lang: if temp_source_lang.startswith(lang): dest_lang = temp_source_lang.rsplit("-", 1)[1] source_lang = temp_source_lang.rsplit("-", 1)[0] else: dest_lang = temp_source_lang.split("-", 1)[1] source_lang = temp_source_lang.split("-", 1)[0] elif temp_source_lang.count('-') == 1: for lang in problem_lang_code: if lang in temp_source_lang: dest_lang = None break else: dest_lang = temp_source_lang.split("-")[1] source_lang = temp_source_lang.split("-")[0] trl = Translator() if dest_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=source_lang) return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( detection.lang, source_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( "Tarafından çevrildi `{}` to `{}`:\n`{}`".format( source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text( "Mesajları yanıtlayın veya istenen dile tercüme etmek için diğer dillerden mesajlar yazın\n\n" "Örnek: `/trtr ml` İngilizceden Malayalam diline çevirmek için\n" "Veya kullan: `/tr Otomatik algılama ve Malayalam'a tercüme için ml`.\n" "Gör [Dil Kodlarının Listesi](t.me/OnePunchSupport/12823) dil kodlarının listesi için.", parse_mode="markdown", disable_web_page_preview=True) except ValueError: update.effective_message.reply_text("Amaçlanan dil bulunamadı!") else: return
# coding: utf8 from __future__ import unicode_literals from typing import Dict, Optional, Tuple from spacy.tokens import Doc, Span, Token from spacy.matcher import PhraseMatcher from spacy.language import Language from spacy.util import filter_spans from emoji import UNICODE_EMOJI from .about import __version__ # make sure multi-character emoji don't contain whitespace EMOJI = {e.replace(" ", ""): t for e, t in UNICODE_EMOJI.items()} DEFAULT_ATTRS = ("has_emoji", "is_emoji", "emoji_desc", "emoji") DEFAULT_CONFIG = { "merge_spans": True, "lookup": {}, "pattern_id": "EMOJI", "attrs": DEFAULT_ATTRS, "force_extension": True, } @Language.factory("emoji", default_config=DEFAULT_CONFIG) def create_emoji( nlp: Language, name: str,
def totranslate(bot: Bot, update: Update): msg = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) text = msg.reply_to_message.text message = update.effective_message dest_lang = None try: source_lang = args[1].split(None, 1)[0] except: source_lang = "en" if source_lang.count("-") == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count("-") == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang == None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, "") trl = Translator() if source_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=dest_lang) return message.reply_text( f"Diterjemahkan dari `{detection.lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN, ) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( f"Diterjemahkan dari `{source_lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN, ) else: args = update.effective_message.text.split(None, 2) message = update.effective_message source_lang = args[1] text = args[2] exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, "") dest_lang = None temp_source_lang = source_lang if temp_source_lang.count("-") == 2: for lang in problem_lang_code: if lang in temp_source_lang: if temp_source_lang.startswith(lang): dest_lang = temp_source_lang.rsplit("-", 1)[1] source_lang = temp_source_lang.rsplit("-", 1)[0] else: dest_lang = temp_source_lang.split("-", 1)[1] source_lang = temp_source_lang.split("-", 1)[0] elif temp_source_lang.count("-") == 1: for lang in problem_lang_code: if lang in temp_source_lang: dest_lang = None break else: dest_lang = temp_source_lang.split("-")[1] source_lang = temp_source_lang.split("-")[0] trl = Translator() if dest_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=source_lang) return message.reply_text( "Diterjemahkan dari `{}` to `{}`:\n`{}`".format( detection.lang, source_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN, ) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( "Diterjemahkan dari `{}` to `{}`:\n`{}`".format( source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN, ) except IndexError: update.effective_message.reply_text( "Membalas pesan atau menulis pesan dari bahasa lain •• untuk menerjemahkan ke dalam bahasa yang dimaksudkan\n\n" "Contoh: `/tr en id` untuk menerjemahkan dari bahasa Inggris ke bahasa Indonesia\n" "Atau gunakan: `/tr id` untuk deteksi otomatis dan menerjemahkannya ke dalam bahasa Indonesia.\n" "Lihat [Daftar Kode Bahasa](t.me/OnePunchSupport/12823) untuk daftar kode bahasa.", parse_mode="markdown", disable_web_page_preview=True, ) except ValueError: update.effective_message.reply_text( "Bahasa yang dimaksudkan tidak ditemukan!") else: return
def terjemah(update, context): msg = update.effective_message chat_id = update.effective_chat.id getlang = langsql.get_lang(update.effective_message.from_user.id) try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split() if len(args) >= 2: target = args[1] if "-" in target: target2 = target.split("-")[1] target = target.split("-")[0] else: target2 = None else: if getlang: target = getlang target2 = None else: raise IndexError teks = msg.reply_to_message.text #teks = deEmojify(teks) exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in teks: teks = teks.replace(emoji, '') message = update.effective_message trl = Translator() if target2 == None: deteksibahasa = trl.detect(teks) tekstr = trl.translate(teks, dest=target) send_message( update.effective_message, tl(update.effective_message, "Diterjemahkan dari `{}` ke `{}`:\n`{}`").format( deteksibahasa.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(teks, dest=target2, src=target) send_message( update.effective_message, tl(update.effective_message, "Diterjemahkan dari `{}` ke `{}`:\n`{}`").format( target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) if len(args) != 1: target = args[1] teks = args[2] target2 = None if "-" in target: target2 = target.split("-")[1] target = target.split("-")[0] else: target = getlang teks = args[1] #teks = deEmojify(teks) exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in teks: teks = teks.replace(emoji, '') message = update.effective_message trl = Translator() if target2 == None: deteksibahasa = trl.detect(teks) tekstr = trl.translate(teks, dest=target) return send_message( update.effective_message, tl(update.effective_message, "Diterjemahkan dari `{}` ke `{}`:\n`{}`").format( deteksibahasa.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(teks, dest=target2, src=target) send_message( update.effective_message, tl(update.effective_message, "Diterjemahkan dari `{}` ke `{}`:\n`{}`").format( target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) except IndexError: send_message( update.effective_message, tl( update.effective_message, "Balas pesan atau tulis pesan dari bahasa lain untuk " "diterjemahkan kedalam bahasa yang di dituju\n\n" "Contoh: `/tr en-id` untuk menerjemahkan dari Bahasa inggris ke Bahasa Indonesia\n" "Atau gunakan: `/tr id` untuk deteksi otomatis dan menerjemahkannya kedalam bahasa indonesia" ), parse_mode="markdown") except ValueError: send_message( update.effective_message, tl(update.effective_message, "Bahasa yang di tuju tidak ditemukan!")) else: return
def totranslate(update: Update, context: CallbackContext): message = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if message.reply_to_message: args = update.effective_message.text.split(None, 1) if message.reply_to_message.text: text = message.reply_to_message.text elif message.reply_to_message.caption: text = message.reply_to_message.caption try: source_lang = args[1].split(None, 1)[0] except (IndexError, AttributeError): source_lang = "es" else: args = update.effective_message.text.split(None, 2) text = args[2] source_lang = args[1] if source_lang.count("-") == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count("-") == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang is None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, "") trl = google_translator() if source_lang is None: detection = trl.detect(text) trans_str = trl.translate(text, lang_tgt=dest_lang) return message.reply_text( f"Traducido del `{detection[0]}` al `{dest_lang}`:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN, ) else: trans_str = trl.translate(text, lang_tgt=dest_lang, lang_src=source_lang) message.reply_text( f"Traducido del `{source_lang}` al `{dest_lang}`:\n`{trans_str}`", parse_mode=ParseMode.MARKDOWN, ) except IndexError: update.effective_message.reply_text( "Responde a mensajes o escribe en otros idiomas para traducirlos al idioma deseado\n\n" "*Ejemplo:* `/tr en-es` Para traducir del inglés al español\n\n" f"Para ver la lista de códigos de idioma puedes hacer click [aquí](http://t.me/{context.bot.username}?start=ghelp_traductor).", parse_mode="markdown", disable_web_page_preview=True, ) except ValueError: update.effective_message.reply_text( "No se encontró el idioma deseado!") else: return
def do_translate(bot: Bot, update: Update, args: List[str]): chat = update.effective_chat msg = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) if msg.reply_to_message and (msg.reply_to_message.audio or msg.reply_to_message.voice) or ( args and args[0] == 'animal'): reply = random.choice(tld_list(chat.id, 'translator_animal_lang')) if args: translation_type = "text" else: translation_type = "audio" msg.reply_text(tld(chat.id, 'translator_animal_translated').format( translation_type, reply), parse_mode=ParseMode.MARKDOWN) return try: if msg.reply_to_message: args = update.effective_message.text.split(None, 1) if msg.reply_to_message.text: text = msg.reply_to_message.text elif msg.reply_to_message.caption: text = msg.reply_to_message.caption message = update.effective_message dest_lang = None try: source_lang = args[1].split(None, 1)[0] except: source_lang = "en" if source_lang.count('-') == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count('-') == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang is None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') if source_lang is None: detection = trl.detect(text) tekstr = trl.translate(text, dest=dest_lang) return message.reply_text(tld(chat.id, "translator_translated").format( detection.lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text(tld(chat.id, "translator_translated").format( source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) message = update.effective_message source_lang = args[1] text = args[2] exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') dest_lang = None temp_source_lang = source_lang if temp_source_lang.count('-') == 2: for lang in problem_lang_code: if lang in temp_source_lang: if temp_source_lang.startswith(lang): dest_lang = temp_source_lang.rsplit("-", 1)[1] source_lang = temp_source_lang.rsplit("-", 1)[0] else: dest_lang = temp_source_lang.split("-", 1)[1] source_lang = temp_source_lang.split("-", 1)[0] elif temp_source_lang.count('-') == 1: for lang in problem_lang_code: if lang in temp_source_lang: dest_lang = None break else: dest_lang = temp_source_lang.split("-")[1] source_lang = temp_source_lang.split("-")[0] if dest_lang is None: detection = trl.detect(text) tekstr = trl.translate(text, dest=source_lang) return message.reply_text(tld(chat.id, "translator_translated").format( detection.lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text(tld(chat.id, "translator_translated").format( source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text(tld(chat.id, "translator_no_args"), parse_mode="markdown", disable_web_page_preview=True) except ValueError: update.effective_message.reply_text(tld(chat.id, "translator_err")) else: return
def terjemah(bot: Bot, update: Update): spam = spamfilters(update.effective_message.text, update.effective_message.from_user.id, update.effective_chat.id) if spam == True: return update.effective_message.reply_text( "Saya kecewa dengan anda, saya tidak akan mendengar kata-kata anda sekarang!" ) msg = update.effective_message chat_id = update.effective_chat.id """ lang = str("af,am,ar,az,be,bg,bn,bs,ca,ceb,co,cs,cy,da,de,el,en,eo,es,et,eu,fa,fi,fr,fy,ga,gd,gl,gu,ha,haw,hi,hmn,hr,ht,hu,hy,id,ig,is,it,iw,ja,jw,ka,kk,km,kn,ko,ku,ky,la,lb,lo,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,my,ne,nl,no,ny,pa,pl,ps,pt,ro,ru,sd,si,sk,sl,sm,sn,so,sq,sr,st,su,sv,sw,ta,te,tg,th,tl,tr,uk,ur,uz,vi,xh,yi,yo,zh,zh_CN,zh_TW,zu".split(",")) try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) try: target = args[1].split(None, 1)[0] except: target = args[1] try: target2 = args[1].split(None, 2)[1] if target2 not in lang: target2 = None else: target = args[1].split(None, 2)[0] target2 = args[1].split(None, 2)[1] except: target2 = None teks = msg.reply_to_message.text message = update.effective_message trl = Translator() if target2 == None: deteksibahasa = trl.detect(teks) tekstr = trl.translate(teks, dest=target) if tekstr.pronunciation == None: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(deteksibahasa.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n*Aksara:*\n`{}`\n*Teks:*\n`{}`".format(deteksibahasa.lang, target, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(teks, dest=target2, src=target) if tekstr.pronunciation == None: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n*Aksara:*\n`{}`\n*Teks:*\n`{}`".format(target, target2, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) target = args[1] try: target2 = args[2].split(None, 1)[0] if target2 not in lang: target2 = None teks = args[2] else: target2 = args[2].split(None, 1)[0] teks = args[2].split(None, 1)[1] except: target2 = None teks = args[2] message = update.effective_message trl = Translator() if target2 == None: deteksibahasa = trl.detect(teks) tekstr = trl.translate(teks, dest=target) if tekstr.pronunciation == None: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(deteksibahasa.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n*Aksara:*\n`{}`\n*Teks:*\n`{}`".format(deteksibahasa.lang, target, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(teks, dest=target2, src=target) if tekstr.pronunciation == None: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n*Aksara:*\n`{}`\n*Teks:*\n`{}`".format(target, target2, tekstr.text, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) """ try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) target2 = None try: target = args[1].split(None, 1)[0] except: target = args[1] if "-" in target: target2 = target.split("-")[1] target = target.split("-")[0] teks = msg.reply_to_message.text #teks = deEmojify(teks) exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in teks: teks = teks.replace(emoji, '') message = update.effective_message trl = Translator() if target2 == None: deteksibahasa = trl.detect(teks) tekstr = trl.translate(teks, dest=target) if tekstr.pronunciation == None: return message.reply_text( "Diterjemahkan dari `{}` ke `{}`:\n`{}`".format( deteksibahasa.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text( "Diterjemahkan dari `{}` ke `{}`:\n`{}`".format( deteksibahasa.lang, target, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(teks, dest=target2, src=target) if tekstr.pronunciation == None: return message.reply_text( "Diterjemahkan dari `{}` ke `{}`:\n`{}`".format( target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: return message.reply_text( "Diterjemahkan dari `{}` ke `{}`:\n`{}`".format( target, target2, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) target = args[1] teks = args[2] #teks = deEmojify(teks) exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in teks: teks = teks.replace(emoji, '') target2 = None if "-" in target: target2 = target.split("-")[1] target = target.split("-")[0] message = update.effective_message trl = Translator() if target2 == None: deteksibahasa = trl.detect(teks) tekstr = trl.translate(teks, dest=target) return message.reply_text( "Diterjemahkan dari `{}` ke `{}`:\n`{}`".format( deteksibahasa.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) #if tekstr.pronunciation == None: # return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(deteksibahasa.lang, target, tekstr.text), parse_mode=ParseMode.MARKDOWN) #else: # return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(deteksibahasa.lang, target, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(teks, dest=target2, src=target) message.reply_text( "Diterjemahkan dari `{}` ke `{}`:\n`{}`".format( target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) #if tekstr.pronunciation == None: # return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(target, target2, tekstr.text), parse_mode=ParseMode.MARKDOWN) #else: # return message.reply_text("Diterjemahkan dari `{}` ke `{}`:\n`{}`".format(target, target2, tekstr.pronunciation), parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text( "Balas pesan atau tulis pesan dari bahasa lain untuk " "diterjemahkan kedalam bahasa yang di dituju\n\n" "Contoh: `/tr en-id` untuk menerjemahkan dari Bahasa inggris ke Bahasa Indonesia\n" "Atau gunakan: `/tr id` untuk deteksi otomatis dan menerjemahkannya kedalam bahasa indonesia", parse_mode="markdown") except ValueError: update.effective_message.reply_text( "Bahasa yang di tuju tidak ditemukan!") else: return
class TwitterIQ(dict): """ This class creates an inverted index of a .csv file that contains information and content from a number of tweets. This class inherits from the default dictionary class in Python. This was done primarily to utilize the __missing__ function, which serves to make the code a bit more Pythonic. The class loads each token individually and uses the __missing__ method to determine whether it is already in the dictionary (self). In the case the it is, the id of the particular tweet/doc is added to the relevant postings list. Query methods are detailed in their respective methods' docstrings. Attributes: all_postings: List containing ALL postings lists tweet_content_dict: Dictionary whose keys are twitter_ids pointing to the content of the tokenized tweets. __current_tweet_id: ID of the doc/tweet that is currently being iterated over. This is used by the __missing__ method to propery organize the dictionary """ STOP_WORDS = stopwords.words('english') + stopwords.words('german') EXCLUSION_LIST = list(punctuation) + list( UNICODE_EMOJI.keys()) + ['...', 'de', 'com'] def __init__(self, path: str = None, strip_handles: bool = True, **kwargs): """ Initializes by walking through each token and creating an inverted index as detailed above. :param str path: the path to the string """ super().__init__(**kwargs) self.all_postings = [] self.tweet_content_dict = {} self.tokenizer = TweetTokenizer(strip_handles=strip_handles) self.__indexing = False self.length = 0 if path: self.index(path) def __missing__(self, token: str): """ If entry is missing, add posting to all_postings, then creates a PostingNode and sets the entry to equal that value. :param str token: The token to be added to the dictionary :return: posting """ if self.__indexing: self.all_postings.append([self.length]) self[token] = PostingNode(self.all_postings[-1]) return self[token] else: return PostingNode([]) def __index_tokens(self, tweet_content: list) -> None: """ Walks the the list of tokens from each tweet. If a token is not clean, it exits without adding an entry. It then adds to (or uses the __missing__ method to create) the dictionary (self) entry for each token. It then adds to the posting list of each token. :param list tweet_content: a list of tokens from tweet :returns: None """ for token in tweet_content: token = self.__clean(token) if not token: return # creates entry or assigns posting_node to existing one posting_node = self[token] if self.length not in posting_node.postings_list: # adds to end of posting list and increments freq posting_node.postings_list.append(self.length) posting_node.freq += 1 def __clean(self, token: str) -> Union[str, None]: """ Removes stop words for English and German and makes all tokens lowercase. :param str token: the token to be cleaned :return: The token if it can be cleaned, None if not :rtype: str """ if token in TwitterIQ.EXCLUSION_LIST or token.startswith(('http')): return if token.startswith('#'): token = token[1:] token = token.lower() if token in TwitterIQ.STOP_WORDS: return return token def get_tokens_from_tweet(self, tweet_id: int) -> str: """ Returns the tokens from a specific tweet/doc ID :param int tweet_id: the tweet to be returned :return: a list of tokens from a tweet :rtype: List[str] """ return self.tweet_content_dict[tweet_id] def get_most_freq_words(self, n: int = 10) -> List[str]: """ Returns the words with the three largest frequencies. :param int n: the optional n number of words to return :return: the most frequently used words in the corpus :rtype: list """ return heapq.nlargest(n, self, key=lambda x: self[x]) def index(self, path: str) -> None: self.__indexing = True with open(path, 'r') as corpus: # combs through each doc/tweet individually for doc in corpus: raw_tweet = doc.split('\t')[4] self.tweet_content_dict[self.length] = raw_tweet tokenized_doc = self.tokenizer.tokenize(raw_tweet) self.__index_tokens(tokenized_doc) self.length += 1 self.__indexing = False def query(self, term1: str, term2: str = None) -> List[int]: """ Gets the postings list for a term or the intersection or the posting lists of two different terms. :param str term1: the first (or only) string to query :param str term2: the optione 2nd string to intersect with :return: the positings list or intersection of two """ if term2 is None: return self[term1].postings_list else: return list(set(self.query(term1)) & set(self.query(term2))) def print_query(self, term1: str, term2: str = None) -> None: """ Pretty prints the query method. :param str term1: the first term to query :param str term2: the optional second term to intersect with """ for tweet_id in self.query(term1, term2): print(f'{tweet_id}:', self.tweet_content_dict[tweet_id]) def __len__(self): return self.length
def totranslate(bot: Bot, update: Update): msg = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if msg.reply_to_message and msg.reply_to_message.text: args = update.effective_message.text.split(None, 1) text = msg.reply_to_message.text message = update.effective_message dest_lang = None try: source_lang = args[1].split(None, 1)[0] except: source_lang = "en" if source_lang.count('-') == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count('-') == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang == None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') trl = Translator() if source_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=dest_lang) return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( detection.lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: args = update.effective_message.text.split(None, 2) message = update.effective_message source_lang = args[1] text = args[2] exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, '') dest_lang = None temp_source_lang = source_lang if temp_source_lang.count('-') == 2: for lang in problem_lang_code: if lang in temp_source_lang: if temp_source_lang.startswith(lang): dest_lang = temp_source_lang.rsplit("-", 1)[1] source_lang = temp_source_lang.rsplit("-", 1)[0] else: dest_lang = temp_source_lang.split("-", 1)[1] source_lang = temp_source_lang.split("-", 1)[0] elif temp_source_lang.count('-') == 1: for lang in problem_lang_code: if lang in temp_source_lang: dest_lang = None break else: dest_lang = temp_source_lang.split("-")[1] source_lang = temp_source_lang.split("-")[0] trl = Translator() if dest_lang == None: detection = trl.detect(text) tekstr = trl.translate(text, dest=source_lang) return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( detection.lang, source_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN) except IndexError: update.effective_message.reply_text( "Reply to messages or write messages from other languages for translating into the intended language\n\nExample: `/tr en ml` to translate from English to Malayalam\nOr use: `/tr ml` for automatic detection and translating it into Malayalam.\nSee [List of Language Codes](https://telegra.ph/%C5%9E%E0%B8%AA%E2%84%9D%E0%B8%AA%D1%92-06-28) for a list of language codes.", parse_mode="markdown", disable_web_page_preview=True) except ValueError: update.effective_message.reply_text( "The intended language is not found!") else: return
# Slixmpp: The Slick XMPP Library # Copyright (C) 2020 Mathieu Pasquet # This file is part of Slixmpp. # See the file LICENSE for copying permission. from typing import Set, Iterable from slixmpp.xmlstream import ElementBase try: from emoji import UNICODE_EMOJI if UNICODE_EMOJI.get('en'): UNICODE_EMOJI = UNICODE_EMOJI['en'] except ImportError: UNICODE_EMOJI = None NS = 'urn:xmpp:reactions:0' class Reactions(ElementBase): name = 'reactions' plugin_attrib = 'reactions' namespace = NS interfaces = {'id', 'values'} def get_values(self, *, all_chars=False) -> Set[str]: """"Get all reactions as str""" reactions = set() for reaction in self: value = reaction['value'] if UNICODE_EMOJI and not all_chars: if value in UNICODE_EMOJI: reactions.add(reaction['value']) else:
def totranslate(update: Update, context: CallbackContext): msg = update.effective_message problem_lang_code = [] for key in LANGUAGES: if "-" in key: problem_lang_code.append(key) try: if msg.reply_to_message: args = update.effective_message.text.split(None, 1) if msg.reply_to_message.text: text = msg.reply_to_message.text elif msg.reply_to_message.caption: text = msg.reply_to_message.caption message = update.effective_message dest_lang = None try: source_lang = args[1].split(None, 1)[0] except: source_lang = "en" if source_lang.count("-") == 2: for lang in problem_lang_code: if lang in source_lang: if source_lang.startswith(lang): dest_lang = source_lang.rsplit("-", 1)[1] source_lang = source_lang.rsplit("-", 1)[0] else: dest_lang = source_lang.split("-", 1)[1] source_lang = source_lang.split("-", 1)[0] elif source_lang.count("-") == 1: for lang in problem_lang_code: if lang in source_lang: dest_lang = source_lang source_lang = None break if dest_lang is None: dest_lang = source_lang.split("-")[1] source_lang = source_lang.split("-")[0] else: dest_lang = source_lang source_lang = None exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, "") trl = Translator() if source_lang is None: detection = trl.detect(text) tekstr = trl.translate(text, dest=dest_lang) return message.reply_text( f"Translated from `{detection.lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN, ) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( f"Translated from `{source_lang}` to `{dest_lang}`:\n`{tekstr.text}`", parse_mode=ParseMode.MARKDOWN, ) else: args = update.effective_message.text.split(None, 2) message = update.effective_message source_lang = args[1] text = args[2] exclude_list = UNICODE_EMOJI.keys() for emoji in exclude_list: if emoji in text: text = text.replace(emoji, "") dest_lang = None temp_source_lang = source_lang if temp_source_lang.count("-") == 2: for lang in problem_lang_code: if lang in temp_source_lang: if temp_source_lang.startswith(lang): dest_lang = temp_source_lang.rsplit("-", 1)[1] source_lang = temp_source_lang.rsplit("-", 1)[0] else: dest_lang = temp_source_lang.split("-", 1)[1] source_lang = temp_source_lang.split("-", 1)[0] elif temp_source_lang.count("-") == 1: for lang in problem_lang_code: if lang in temp_source_lang: dest_lang = None break else: dest_lang = temp_source_lang.split("-")[1] source_lang = temp_source_lang.split("-")[0] trl = Translator() if dest_lang is None: detection = trl.detect(text) tekstr = trl.translate(text, dest=source_lang) return message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( detection.lang, source_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN, ) else: tekstr = trl.translate(text, dest=dest_lang, src=source_lang) message.reply_text( "Translated from `{}` to `{}`:\n`{}`".format( source_lang, dest_lang, tekstr.text), parse_mode=ParseMode.MARKDOWN, ) except IndexError: update.effective_message.reply_text( "Reply to messages or write messages from other languages for translating into the intended language\n\n" "Example: `/tr en-ml` to translate from English to Malayalam\n" "Or use: `/tr ml` for automatic detection and translating it into Malayalam.\n" "See [List of Language Codes](t.me/OnePunchSupport/12823) for a list of language codes.", parse_mode="markdown", disable_web_page_preview=True, ) except ValueError: update.effective_message.reply_text( "The intended language is not found!") else: return
class TwemojiParser: UNICODES = UNICODE_EMOJI.get('en', UNICODE_EMOJI).keys() @staticmethod def is_twemoji_url(text: str) -> bool: """ A static method that says if a url is a twemoji url """ return text.startswith( "https://twemoji.maxcdn.com/v/latest/72x72/") and text.endswith( ".png") and text.count(" ") == 0 @staticmethod def has_emoji(text: str) -> bool: """ A static method that checks if a text has an emoji. """ for char in text: if char in TwemojiParser.UNICODES: return True return False @staticmethod def count_emojis(text: str) -> int: """ A static method that counts the emojis from a string. """ return len(TwemojiParser.get_emojis_from(text)) @staticmethod def get_emojis_from(text: str) -> list: """ A static method that gets the list of emojis from a string. """ return list(filter(lambda x: (x in TwemojiParser.UNICODES), list(text))) def __is_emoji_url(self, text: str) -> bool: if not self.parse_discord_emoji: return text.startswith("https://twemoji.maxcdn.com/v/latest/72x72/" ) and text.endswith(".png") and ( " " not in text) return (text.startswith("https://twemoji.maxcdn.com/v/latest/72x72/") or text.startswith("https://cdn.discordapp.com/emojis/") ) and text.endswith(".png") and text.count(" ") def __init__(self, image, parse_discord_emoji: bool = False, session: ClientSession = None, *args, **kwargs) -> None: """ Creates a parser from PIL.Image.Image object. """ if isinstance(image, bytes): self.image = Image.open(BytesIO(image)) elif isinstance(image, BytesIO): self.image = Image.open(image) elif isinstance(image, str) and isfile(image): self.image = Image.open(image) else: self.image = image self.draw = ImageDraw.Draw(image) self._emoji_cache = {} self._image_cache = {} self.__session = session if session else ClientSession() self.parse_discord_emoji = parse_discord_emoji async def getsize(self, text: str, font, check_for_url: bool = True, spacing: int = 4, *args, **kwargs) -> tuple: """ Gets the size of a text. """ _parsed = await self.__parse_text(text, check_for_url) if self.parse_discord_emoji: _parsed = await parse_custom_emoji(text, self.__session) _width, _height = 0, font.getsize(text)[1] _, _font_descent = font.getmetrics() for word in _parsed: _width += (_height + _font_descent + spacing if self.is_twemoji_url(word) else font.getsize(word)[0] + spacing) return (_width - spacing, _height) async def __parse_text(self, text: str, check: bool) -> list: result = [] temp_word = "" for letter in range(len(text)): if text[letter] not in TwemojiParser.UNICODES: # basic text case if (letter == (len(text) - 1)) and temp_word: result.append(temp_word + text[letter]) break temp_word += text[letter] continue # check if there is an empty string in the array if temp_word: result.append(temp_word) temp_word = "" if text[letter] in self._emoji_cache: # store in cache so it uses less HTTP requests result.append(self._emoji_cache[text[letter]]) continue # include_check will check the URL if it's valid. Disabling it will make the process faster, but more error-prone res = await emoji_to_url(text[letter], check, self.__session) if res != text[letter]: result.append(res) self._emoji_cache[text[letter]] = res else: result.append(text[letter]) return (result or [text]) async def __image_from_url(self, url: str) -> Image.Image: """ Gets an image from URL. """ async with self.__session.get(url) as resp: _byte = await resp.read() return Image.open(BytesIO(_byte)) async def draw_text( self, # Same PIL options xy: tuple, text: str, font=None, spacing: int = 4, # Parser options with_url_check: bool = True, clear_cache_after_usage: bool = False, *args, **kwargs) -> None: """ Draws a text with the emoji. clear_cache_after_usage will clear the cache after this method is finished. (defaults to False) """ _parsed_text = await self.__parse_text(text, with_url_check) _font = font or ImageFont.load_default() _font_size = getattr(_font, "size", 11) _, _font_descent = font.getmetrics() _current_x, _current_y = xy[0], xy[1] _origin_x = xy[0] if self.parse_discord_emoji: _parsed_text = await parse_custom_emoji(_parsed_text, self.__session) if not [i for i in _parsed_text if self.__is_emoji_url(i)]: self.draw.text(xy, text, font=font, spacing=spacing, *args, **kwargs) else: for word in _parsed_text: if self.__is_emoji_url(word): # check if image is in cache if word in self._image_cache: _emoji_im = self._image_cache[word].copy() else: _emoji_im = await self.__image_from_url(word) _emoji_im = _emoji_im.resize( (_font_size - _font_size // 6, _font_size - _font_size // 6), Image.ANTIALIAS).convert("RGBA") self._image_cache[word] = _emoji_im.copy() self.image.paste(_emoji_im, (_current_x, _current_y + _font_descent - _font_descent // 3), _emoji_im) _current_x += _font_size + _font_descent + ( spacing - (_font_size // 6 + _font_descent)) continue _size = _font.getsize(word.replace("\n", "")) if word.count("\n") > 0: _current_x = _origin_x - spacing _current_y += (_font_size * word.count("\n")) self.draw.text((_current_x, _current_y), word, font=font, *args, **kwargs) _current_x += _size[0] + spacing if clear_cache_after_usage: await self.close( delete_all_attributes=bool(kwargs.get("delete_all_attributes")) ) async def close(self, delete_all_attributes: bool = True, close_session: bool = True): """ Closes the aiohttp ClientSession and clears all the cache. """ if close_session: await self.__session.close() if delete_all_attributes: del self._emoji_cache del self._image_cache del self.draw del self.image del self.parse_discord_emoji gc.collect( ) # if the cache is large it is better to explicitly call this