Spaces:
Running
Running
| from asyncio import sleep | |
| from pyrogram import filters | |
| from pyrogram.types import CallbackQuery, Message | |
| from Powers import LOGGER | |
| from Powers.bot_class import Gojo | |
| from Powers.database.lang_db import Langs | |
| from Powers.tr_engine import lang_dict, tlang | |
| from Powers.utils.custom_filters import admin_filter, command | |
| from Powers.utils.kbhelpers import ikb | |
| async def gen_langs_kb(): | |
| langs = sorted(list(lang_dict.keys())) | |
| return [ | |
| [ | |
| ( | |
| f"{lang_dict[lang]['main']['language_flag']} {lang_dict[lang]['main']['language_name']} ({lang_dict[lang]['main']['lang_sample']})", | |
| f"set_lang.{lang}", | |
| ) | |
| for lang in langs | |
| ], | |
| [ | |
| ( | |
| "π Help us with translations!", | |
| "https://crowdin.com/project/gojosatarou", | |
| "url", | |
| ), | |
| ], | |
| ] | |
| async def chlang_callback(_, q: CallbackQuery): | |
| kb = await gen_langs_kb() | |
| kb.append([(f"Β« {(tlang(q, 'general.back_btn'))}", "start_back")]) | |
| await q.message.edit_text( | |
| (tlang(q, "langs.changelang")), | |
| reply_markup=ikb(kb), | |
| ) | |
| await q.answer() | |
| return | |
| async def close_btn_callback(_, q: CallbackQuery): | |
| await q.message.delete() | |
| try: | |
| await q.message.reply_to_message.delete() | |
| except Exception as ef: | |
| LOGGER.error(f"Error: Cannot delete message\n{ef}") | |
| await q.answer() | |
| return | |
| async def set_lang_callback(_, q: CallbackQuery): | |
| lang_code = q.data.split(".")[1] | |
| Langs(q.message.chat.id).set_lang(lang_code) | |
| await sleep(0.1) | |
| if q.message.chat.type == "private": | |
| keyboard = ikb([[(f"Β« {(tlang(q, 'general.back_btn'))}", "start_back")]]) | |
| else: | |
| keyboard = None | |
| await q.message.edit_text( | |
| f"π {((tlang(q, 'langs.changed')).format(lang_code=lang_code))}", | |
| reply_markup=keyboard, | |
| ) | |
| await q.answer() | |
| return | |
| async def set_lang(_, m: Message): | |
| args = m.text.split() | |
| if len(args) > 2: | |
| await m.reply_text(tlang(m, "langs.correct_usage")) | |
| return | |
| if len(args) == 2: | |
| lang_code = args[1] | |
| avail_langs = set(lang_dict.keys()) | |
| if lang_code not in avail_langs: | |
| await m.reply_text( | |
| f"Please choose a valid language code from: {', '.join(avail_langs)}", | |
| ) | |
| return | |
| Langs(m.chat.id).set_lang(lang_code) | |
| LOGGER.info(f"{m.from_user.id} change language to {lang_code} in {m.chat.id}") | |
| await m.reply_text( | |
| f"π {((tlang(m, 'langs.changed')).format(lang_code=lang_code))}", | |
| ) | |
| return | |
| await m.reply_text( | |
| (tlang(m, "langs.changelang")), | |
| reply_markup=ikb(await gen_langs_kb()), | |
| ) | |
| return | |
| __PLUGIN__ = "language" | |
| __alt_name__ = ["lang", "langs", "languages"] | |
| __buttons__ = [ | |
| [ | |
| ( | |
| "π Help us with translations!", | |
| "https://t.me/gojo_updates", | |
| "url", | |
| ), | |
| ], | |
| ] | |