def insults(bot: Bot, update: Update): message = update.effective_message chat = update.effective_chat text = random.choice(tld_list(chat.id, "memes_insults_list")) if message.reply_to_message: message.reply_to_message.reply_text(text) else: message.reply_text(text)
def do_translate(bot: Bot, update: Update, args: List[str]): chat = update.effective_chat # type: Optional[Chat] msg = update.effective_message # type: Optional[Message] lan = " ".join(args) 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 if msg.reply_to_message: to_translate_text = remove_emoji(msg.reply_to_message.text) else: msg.reply_text(tld(chat.id, "translator_no_str")) return if not args: msg.reply_text(tld(chat.id, 'translator_no_args')) return translator = Translator() try: translated = translator.translate(to_translate_text, dest=lan) except ValueError as e: msg.reply_text(tld(chat.id, 'translator_err').format(e)) src_lang = LANGUAGES[f'{translated.src.lower()}'].title() dest_lang = LANGUAGES[f'{translated.dest.lower()}'].title() translated_text = translated.text msg.reply_text(tld(chat.id, 'translator_translated').format(src_lang, to_translate_text, dest_lang, translated_text), parse_mode=ParseMode.MARKDOWN)
def slap(bot: Bot, update: Update, args: List[str]): chat = update.effective_chat msg = update.effective_message # reply to correct message reply_text = msg.reply_to_message.reply_text if msg.reply_to_message else msg.reply_text # get user who sent message if msg.from_user.username: curr_user = "******" + escape_markdown(msg.from_user.username) else: curr_user = "******".format(msg.from_user.first_name, msg.from_user.id) user_id = extract_user(update.effective_message, args) if user_id: slapped_user = bot.get_chat(user_id) user1 = curr_user if slapped_user.username == "RealAkito": reply_text(tld(chat.id, "memes_not_doing_that")) return if slapped_user.username: user2 = "@" + escape_markdown(slapped_user.username) else: user2 = "[{}](tg://user?id={})".format(slapped_user.first_name, slapped_user.id) # if no target found, bot targets the sender else: user1 = "[{}](tg://user?id={})".format(bot.first_name, bot.id) user2 = curr_user temp = random.choice(tld_list(chat.id, "memes_slaps_templates_list")) item = random.choice(tld_list(chat.id, "memes_items_list")) hit = random.choice(tld_list(chat.id, "memes_hit_list")) throw = random.choice(tld_list(chat.id, "memes_throw_list")) itemp = random.choice(tld_list(chat.id, "memes_items_list")) itemr = random.choice(tld_list(chat.id, "memes_items_list")) repl = temp.format(user1=user1, user2=user2, item=item, hits=hit, throws=throw, itemp=itemp, itemr=itemr) reply_text(repl, parse_mode=ParseMode.MARKDOWN)
def runs(bot: Bot, update: Update): chat = update.effective_chat update.effective_message.reply_text( random.choice(tld_list(chat.id, "memes_runs_list")))
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( 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 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 pt-en` to translate from English to Malayalam\n" "Or use: `/tr en` for automatic detection and translating it into Malayalam.", parse_mode="markdown", disable_web_page_preview=True) except ValueError: update.effective_message.reply_text( "The intended language is not found!") 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