🔖 Update to v1.2.5

This commit is contained in:
xtaodada 2022-08-02 12:57:08 +08:00
parent 21f58ba3d4
commit 772b58b2b6
Signed by: xtaodada
GPG Key ID: 4CBB3F4FA8C85659
9 changed files with 56 additions and 12 deletions

2
.gitignore vendored
View File

@ -128,6 +128,8 @@ keyword.list
requirements2.txt requirements2.txt
languages/custom.yml languages/custom.yml
unknown_errors.txt unknown_errors.txt
pagermaid*.txt
exception*.txt
output.log output.log
# Spyder project settings # Spyder project settings

View File

@ -494,6 +494,10 @@ eval_parameters: <command>
eval_channel: Something went wrong ~ The current PagerMaid-Pyro configuration prohibits the execution of Python commands in the channel. eval_channel: Something went wrong ~ The current PagerMaid-Pyro configuration prohibits the execution of Python commands in the channel.
eval_success: execute Python commands remotely eval_success: execute Python commands remotely
eval_need_dev: '**Please note: This command can directly operate your account** This command is only for developers. If you know what you are doing, please manually configure the `dev` item in the Redis database to any value or create the `dev` file in the `data` folder.' eval_need_dev: '**Please note: This command can directly operate your account** This command is only for developers. If you know what you are doing, please manually configure the `dev` item in the Redis database to any value or create the `dev` file in the `data` folder.'
## send_log
send_log_des: Send the log file to the specified user.
send_log_not_found: The log file does not exist.
send_log_caption: Log file of PagerMaid-Pyro.
## restart ## restart
restart_des: Restart PagerMaid-Pyro restart_des: Restart PagerMaid-Pyro
restart_processing: Try to restart PagerMaid-Pyro. restart_processing: Try to restart PagerMaid-Pyro.

View File

@ -494,6 +494,10 @@ eval_parameters: <command>
eval_channel: Something went wrong ~ The current Maid-Pyro configuration prohibits the execution of Python commands in the channel. eval_channel: Something went wrong ~ The current Maid-Pyro configuration prohibits the execution of Python commands in the channel.
eval_success: execute Python commands remotey eval_success: execute Python commands remotey
eval_need_dev: '**Please note: This command can directly operate your account** This command is only for developers. If you know what you are doing, and please manually configure the `dev` item in the Redis database to any value or create the `dev` file in the `data` folder。' eval_need_dev: '**Please note: This command can directly operate your account** This command is only for developers. If you know what you are doing, and please manually configure the `dev` item in the Redis database to any value or create the `dev` file in the `data` folder。'
## send_log
send_log_des: 指定したユーザーにログ ファイルを送信します。
send_log_not_found: ログファイルが存在しません。
send_log_caption: PagerMaid-Pyroのログファイル。
## restart ## restart
restart_des: Restart PagerMaid-Pyro restart_des: Restart PagerMaid-Pyro
restart_processing: to restart PagerMaid-Pyro. restart_processing: to restart PagerMaid-Pyro.

View File

@ -494,6 +494,10 @@ eval_parameters: <命令>
eval_channel: 出错了呜呜呜 ~ 当前 PagerMaid-Pyro 的配置禁止在频道中执行 Python 命令。 eval_channel: 出错了呜呜呜 ~ 当前 PagerMaid-Pyro 的配置禁止在频道中执行 Python 命令。
eval_success: 远程执行 Python 命令 eval_success: 远程执行 Python 命令
eval_need_dev: '**请注意:此命令可以直接操作您的账户** 此命令仅适用于开发者,如果您知道您在做什么的话,请手动在 Redis 数据库配置 dev 项为任意值或者在 data 文件夹下创建 dev 文件。' eval_need_dev: '**请注意:此命令可以直接操作您的账户** 此命令仅适用于开发者,如果您知道您在做什么的话,请手动在 Redis 数据库配置 dev 项为任意值或者在 data 文件夹下创建 dev 文件。'
## send_log
send_log_des: 将日志文件发送给指定用户
send_log_not_found: 日志文件不存在。
send_log_caption: PagerMaid-Pyro 日志文件
## restart ## restart
restart_des: 使 PagerMaid-Pyro 重新启动 restart_des: 使 PagerMaid-Pyro 重新启动
restart_processing: 尝试重启 PagerMaid-Pyro... restart_processing: 尝试重启 PagerMaid-Pyro...

View File

@ -494,6 +494,10 @@ eval_parameters: <指令>
eval_channel: Error不能在頻道執行指令。 eval_channel: Error不能在頻道執行指令。
eval_success: 執行 Python 指令 eval_success: 執行 Python 指令
eval_need_dev: '**請注意:此命令可以直接操作您的賬戶** 此命令僅適用於開發者,如果您知道您在做什麼的話,請手動在 Redis 數據庫配置 dev 項為任意值或者在 data 文件夾下創建 dev 文件。' eval_need_dev: '**請注意:此命令可以直接操作您的賬戶** 此命令僅適用於開發者,如果您知道您在做什麼的話,請手動在 Redis 數據庫配置 dev 項為任意值或者在 data 文件夾下創建 dev 文件。'
## send_log
send_log_des: 將日誌文件發送到指定的用戶
send_log_not_found: 日誌文件不存在
send_log_caption: PagerMaid-Pyro 日誌文件
## restart ## restart
restart_des: 重新啟動 restart_des: 重新啟動
restart_processing: 正在嘗試重新啟動 restart_processing: 正在嘗試重新啟動

View File

@ -1,9 +1,10 @@
import contextlib import contextlib
from typing import Callable, Awaitable, Set, Dict from typing import Callable, Awaitable, Set, Dict
from coloredlogs import ColoredFormatter from coloredlogs import ColoredFormatter
from datetime import datetime, timezone from datetime import datetime, timezone
from logging import getLogger, StreamHandler, CRITICAL, INFO, basicConfig, DEBUG from logging import getLogger, StreamHandler, CRITICAL, INFO, basicConfig, DEBUG, Formatter, FileHandler
from os import getcwd from os import getcwd
from pyrogram.errors import PeerIdInvalid from pyrogram.errors import PeerIdInvalid
@ -14,7 +15,7 @@ import pyromod.listen
from pyrogram import Client from pyrogram import Client
import sys import sys
pgm_version = "1.2.4" pgm_version = "1.2.5"
CMD_LIST = {} CMD_LIST = {}
module_dir = __path__[0] module_dir = __path__[0]
working_dir = getcwd() working_dir = getcwd()
@ -35,6 +36,9 @@ root_logger.addHandler(logging_handler)
pyro_logger = getLogger("pyrogram") pyro_logger = getLogger("pyrogram")
pyro_logger.setLevel(CRITICAL) pyro_logger.setLevel(CRITICAL)
pyro_logger.addHandler(logging_handler) pyro_logger.addHandler(logging_handler)
file_handler = FileHandler(filename="pagermaid.log.txt", mode="w", encoding="utf-8")
file_handler.setFormatter(Formatter(logging_format))
root_logger.addHandler(file_handler)
basicConfig(level=DEBUG if Config.DEBUG else INFO) basicConfig(level=DEBUG if Config.DEBUG else INFO)
logs.setLevel(DEBUG if Config.DEBUG else INFO) logs.setLevel(DEBUG if Config.DEBUG else INFO)

View File

@ -35,6 +35,7 @@ def move_plugin(file_path):
async def download(name): async def download(name):
html = await client.get(f'{Config.GIT_SOURCE}{name}/main.py') html = await client.get(f'{Config.GIT_SOURCE}{name}/main.py')
assert html.status_code == 200
with open(f'plugins{sep}{name}.py', mode='wb') as f: with open(f'plugins{sep}{name}.py', mode='wb') as f:
f.write(html.text.encode('utf-8')) f.write(html.text.encode('utf-8'))
return f'plugins{sep}{name}.py' return f'plugins{sep}{name}.py'
@ -107,15 +108,16 @@ async def plugin(message: Message):
if x["name"] == i: if x["name"] == i:
if (float(x["version"]) - float(plugin_version)) <= 0: if (float(x["version"]) - float(plugin_version)) <= 0:
no_need_list.append(i) no_need_list.append(i)
temp = False
break
else: else:
remove_plugin(i) remove_plugin(i)
await download(i) try:
await download(i)
except AssertionError:
break
update_version(i, x["version"]) update_version(i, x["version"])
success_list.append(i) success_list.append(i)
temp = False temp = False
break break
if temp: if temp:
failed_list.append(i) failed_list.append(i)
text = f"<b>{lang('apt_name')}</b>\n\n" text = f"<b>{lang('apt_name')}</b>\n\n"
@ -274,7 +276,10 @@ async def plugin(message: Message):
plugin_directory = f"{working_dir}{sep}plugins{sep}" plugin_directory = f"{working_dir}{sep}plugins{sep}"
for i in need_update_list: for i in need_update_list:
remove_plugin(i) remove_plugin(i)
await download(i) try:
await download(i)
except AssertionError:
continue
with open(f"{plugin_directory}version.json", "r", encoding="utf-8") as f: with open(f"{plugin_directory}version.json", "r", encoding="utf-8") as f:
version_json = json.load(f) version_json = json.load(f)
for m in plugin_online: for m in plugin_online:

View File

@ -3,7 +3,7 @@ import sentry_sdk
from subprocess import run, PIPE from subprocess import run, PIPE
from time import time from time import time
from pyrogram.errors import Unauthorized from pyrogram.errors import Unauthorized, UsernameInvalid
from pagermaid import Config from pagermaid import Config
from pagermaid.enums import Client, Message from pagermaid.enums import Client, Message
@ -14,7 +14,7 @@ from pagermaid.single_utils import safe_remove
def sentry_before_send(event, hint): def sentry_before_send(event, hint):
global sentry_sdk_report_time global sentry_sdk_report_time
exc_info = hint.get("exc_info") exc_info = hint.get("exc_info")
if exc_info and isinstance(exc_info[1], Unauthorized): if exc_info and isinstance(exc_info[1], (Unauthorized, UsernameInvalid)):
# The user has been deleted/deactivated or session revoked # The user has been deleted/deactivated or session revoked
safe_remove('pagermaid.session') safe_remove('pagermaid.session')
exit(1) exit(1)

View File

@ -2,13 +2,15 @@ import io
import sys import sys
import traceback import traceback
from os.path import exists, sep
from sys import exit from sys import exit
from platform import node from platform import node
from getpass import getuser from getpass import getuser
from pagermaid import bot
from pagermaid.listener import listener from pagermaid.listener import listener
from pagermaid.utils import attach_log, execute, Message, lang from pagermaid.enums import Message
from pagermaid.services import bot
from pagermaid.utils import attach_log, execute, lang, upload_attachment
@listener(is_plugin=False, command="sh", @listener(is_plugin=False, command="sh",
@ -95,6 +97,21 @@ async def sh_eval(message: Message):
await message.edit(final_output) await message.edit(final_output)
@listener(is_plugin=False, command="send_log",
need_admin=True,
description=lang("send_log_des"))
async def send_log(message: Message):
""" Send log to a chat. """
if not exists("pagermaid.log.txt"):
return await message.edit(lang("send_log_not_found"))
await upload_attachment("pagermaid.log.txt",
message.chat.id,
message.reply_to_message_id,
thumb=f"pagermaid{sep}assets{sep}logo.jpg",
caption=lang("send_log_caption"))
await message.safe_delete()
async def aexec(code, event, client): async def aexec(code, event, client):
exec( exec(
( (