WIP: /language system

This commit is contained in:
2023-06-28 10:37:18 +02:00
parent 6f8b560acc
commit 10c60ae932
9 changed files with 203 additions and 205 deletions

View File

@@ -18,16 +18,18 @@ async def cmd_kill(app: PyroClient, msg: Message):
if msg.from_user.id not in app.admins:
return
user = await app.find_user(msg.from_user)
if len(USERS_WITH_CONTEXT) > 0:
await msg.reply_text(
app._("shutdown_confirm", "message").format(len(USERS_WITH_CONTEXT)),
app._("shutdown_confirm", "message", locale=user.locale).format(
len(USERS_WITH_CONTEXT)
),
reply_markup=InlineKeyboardMarkup(
[
[
InlineKeyboardButton(
app._(
"shutdown", "button", locale=msg.from_user.language_code
),
app._("shutdown", "button", locale=user.locale),
callback_data="shutdown",
)
]

View File

@@ -3,22 +3,25 @@ from pyrogram.client import Client
from pyrogram.types import Message
from classes.pyroclient import PyroClient
from classes.user import PosterUser
@Client.on_message(~filters.scheduled & filters.command(["start"], prefixes="/"))
async def cmd_start(app: PyroClient, msg: Message):
if PosterUser(msg.from_user.id).is_blocked():
user = await app.find_user(msg.from_user)
if user.banned:
return
await msg.reply_text(app._("start", "message", locale=msg.from_user.language_code))
await msg.reply_text(app._("start", "message", locale=user.locale))
@Client.on_message(
~filters.scheduled & filters.command(["rules", "help"], prefixes="/")
)
async def cmd_rules(app: PyroClient, msg: Message):
if PosterUser(msg.from_user.id).is_blocked():
user = await app.find_user(msg.from_user)
if user.banned:
return
await msg.reply_text(app._("rules", "message", locale=msg.from_user.language_code))
await msg.reply_text(app._("rules", "message", locale=user.locale))

View File

@@ -48,9 +48,9 @@ async def cmd_import(app: PyroClient, msg: Message):
else:
return
await msg.reply_text(
app._("import_request", "message", locale=msg.from_user.language_code)
)
user = await app.find_user(msg.from_user)
await msg.reply_text(app._("import_request", "message", locale=user.locale))
answer = await listen_message(app, msg.chat.id, timeout=600)
@@ -58,15 +58,13 @@ async def cmd_import(app: PyroClient, msg: Message):
if answer is None:
await msg.reply_text(
app._("import_ignored", "message", locale=msg.from_user.language_code),
app._("import_ignored", "message", locale=user.locale),
quote=True,
)
return
if answer.text == "/cancel":
await answer.reply_text(
app._("import_abort", "message", locale=msg.from_user.language_code)
)
await answer.reply_text(app._("import_abort", "message", locale=user.locale))
return
if answer.document is None:
@@ -74,7 +72,7 @@ async def cmd_import(app: PyroClient, msg: Message):
app._(
"import_invalid_media",
"message",
locale=msg.from_user.language_code,
locale=user.locale,
),
quote=True,
)
@@ -82,16 +80,14 @@ async def cmd_import(app: PyroClient, msg: Message):
if answer.document.mime_type != "application/zip":
await answer.reply_text(
app._("import_invalid_mime", "message", locale=msg.from_user.language_code),
app._("import_invalid_mime", "message", locale=user.locale),
quote=True,
)
return
if disk_usage(getcwd())[2] < (answer.document.file_size) * 3:
await msg.reply_text(
app._(
"import_too_big", "message", locale=msg.from_user.language_code
).format(
app._("import_too_big", "message", locale=user.locale).format(
answer.document.file_size // (2**30),
disk_usage(getcwd())[2] // (2**30),
)
@@ -111,14 +107,12 @@ async def cmd_import(app: PyroClient, msg: Message):
tmp_path = Path(f"{app.config['locations']['tmp']}/{answer.document.file_id}")
downloading = await answer.reply_text(
app._("import_downloading", "message", locale=msg.from_user.language_code),
app._("import_downloading", "message", locale=user.locale),
quote=True,
)
await app.download_media(answer, file_name=str(tmp_path))
await downloading.edit(
app._("import_unpacking", "message", locale=msg.from_user.language_code)
)
await downloading.edit(app._("import_unpacking", "message", locale=user.locale))
try:
with ZipFile(tmp_path, "r") as handle:
@@ -137,17 +131,15 @@ async def cmd_import(app: PyroClient, msg: Message):
format_exc(),
)
await answer.reply_text(
app._(
"import_unpack_error", "message", locale=msg.from_user.language_code
).format(exp, format_exc())
app._("import_unpack_error", "message", locale=user.locale).format(
exp, format_exc()
)
)
return
logger.info("Downloaded '%s' - awaiting upload", answer.document.file_name)
await downloading.edit(
app._("import_uploading", "message", locale=msg.from_user.language_code)
)
await downloading.edit(app._("import_uploading", "message", locale=user.locale))
remove(tmp_path)
@@ -184,7 +176,7 @@ async def cmd_import(app: PyroClient, msg: Message):
app._(
"import_upload_error_other",
"message",
locale=msg.from_user.language_code,
locale=user.locale,
).format(path.basename(filename)),
disable_notification=True,
)
@@ -205,7 +197,7 @@ async def cmd_import(app: PyroClient, msg: Message):
app._(
"import_upload_error_duplicate",
"message",
locale=msg.from_user.language_code,
locale=user.locale,
).format(path.basename(filename)),
disable_notification=True,
)
@@ -214,7 +206,7 @@ async def cmd_import(app: PyroClient, msg: Message):
app._(
"import_upload_error_other",
"message",
locale=msg.from_user.language_code,
locale=user.locale,
).format(path.basename(filename)),
disable_notification=True,
)
@@ -235,7 +227,7 @@ async def cmd_import(app: PyroClient, msg: Message):
rmtree(Path(f"{app.config['locations']['tmp']}/{tmp_dir}"), ignore_errors=True)
await answer.reply_text(
app._("import_finished", "message", locale=msg.from_user.language_code),
app._("import_finished", "message", locale=user.locale),
quote=True,
)
@@ -260,9 +252,9 @@ async def cmd_remove(app: PyroClient, msg: Message):
else:
return
await msg.reply_text(
app._("remove_request", "message", locale=msg.from_user.language_code)
)
user = await app.find_user(msg.from_user)
await msg.reply_text(app._("remove_request", "message", locale=user.locale))
answer_id = await listen_message(app, msg.chat.id, timeout=600)
@@ -270,28 +262,22 @@ async def cmd_remove(app: PyroClient, msg: Message):
if answer_id is None:
await msg.reply_text(
app._("remove_ignored", "message", locale=msg.from_user.language_code),
app._("remove_ignored", "message", locale=user.locale),
quote=True,
)
return
if answer_id.text == "/cancel":
await answer_id.reply_text(
app._("remove_abort", "message", locale=msg.from_user.language_code)
)
await answer_id.reply_text(app._("remove_abort", "message", locale=user.locale))
return
await msg.reply_text(
app._("remove_kind", "message", locale=msg.from_user.language_code),
app._("remove_kind", "message", locale=user.locale),
reply_markup=ReplyKeyboardMarkup(
[
[
KeyboardButton(
app._("photo", "button", locale=msg.from_user.language_code)
),
KeyboardButton(
app._("video", "button", locale=msg.from_user.language_code)
),
KeyboardButton(app._("photo", "button", locale=user.locale)),
KeyboardButton(app._("video", "button", locale=user.locale)),
]
],
resize_keyboard=True,
@@ -307,7 +293,7 @@ async def cmd_remove(app: PyroClient, msg: Message):
if answer_kind is None:
await msg.reply_text(
app._("remove_ignored", "message", locale=msg.from_user.language_code),
app._("remove_ignored", "message", locale=user.locale),
quote=True,
reply_markup=ReplyKeyboardRemove(),
)
@@ -315,7 +301,7 @@ async def cmd_remove(app: PyroClient, msg: Message):
if answer_kind.text == "/cancel":
await answer_kind.reply_text(
app._("remove_abort", "message", locale=msg.from_user.language_code),
app._("remove_abort", "message", locale=user.locale),
reply_markup=ReplyKeyboardRemove(),
)
return
@@ -326,11 +312,9 @@ async def cmd_remove(app: PyroClient, msg: Message):
func = video_delete
else:
await answer_kind.reply_text(
app._(
"remove_unknown", "message", locale=msg.from_user.language_code
).format(
app._("photo", "button", locale=msg.from_user.language_code),
app._("video", "button", locale=msg.from_user.language_code),
app._("remove_unknown", "message", locale=user.locale).format(
app._("photo", "button", locale=user.locale),
app._("video", "button", locale=user.locale),
),
reply_markup=ReplyKeyboardRemove(),
)
@@ -346,9 +330,9 @@ async def cmd_remove(app: PyroClient, msg: Message):
answer_id.from_user.id,
)
await answer_kind.reply_text(
app._(
"remove_success", "message", locale=msg.from_user.language_code
).format(answer_id.text),
app._("remove_success", "message", locale=user.locale).format(
answer_id.text
),
reply_markup=ReplyKeyboardRemove(),
)
else:
@@ -359,9 +343,9 @@ async def cmd_remove(app: PyroClient, msg: Message):
answer_id.from_user.id,
)
await answer_kind.reply_text(
app._(
"remove_failure", "message", locale=msg.from_user.language_code
).format(answer_id.text),
app._("remove_failure", "message", locale=user.locale).format(
answer_id.text
),
reply_markup=ReplyKeyboardRemove(),
)

View File

@@ -1,7 +1,8 @@
from pyrogram.client import Client
from pyrogram import filters
from pyrogram.types import Message, User
from libbot import sync
from pyrogram import filters
from pyrogram.client import Client
from pyrogram.types import Message, User
from classes.pyroclient import PyroClient
@@ -12,31 +13,29 @@ from classes.pyroclient import PyroClient
& filters.command(["report"], prefixes=["", "/"])
)
async def command_report(app: PyroClient, msg: Message):
if msg.reply_to_message.forward_from_chat.id == app.config["posting"]["channel"]:
await msg.reply_text(
app._(
"report_sent",
"message",
locale=msg.from_user.language_code
if msg.from_user is not None
else None,
)
if msg.reply_to_message.forward_from_chat.id != app.config["posting"]["channel"]:
return
user = await app.find_user(msg.from_user)
await msg.reply_text(
app._(
"report_sent",
"message",
locale=user.locale if msg.from_user is not None else None,
)
)
print(msg)
print(msg)
report_sent = await msg.reply_to_message.forward(app.owner)
sender = msg.from_user if msg.from_user is not None else msg.sender_chat
report_sent = await msg.reply_to_message.forward(app.owner)
sender = msg.from_user if msg.from_user is not None else msg.sender_chat
sender_name = (
sender.first_name if isinstance(sender, User) else sender.title
)
sender_name = sender.first_name if isinstance(sender, User) else sender.title
# ACTION NEEDED
# Name and username are somehow None
await report_sent.reply_text(
app._("report_received", "message").format(
sender_name, sender.username, sender.id
),
quote=True,
)
await report_sent.reply_text(
app._("report_received", "message", locale=user.locale).format(
sender_name, sender.username, sender.id
),
quote=True,
)