import os from telegram import Update from telegram.constants import ChatAction from telegram.ext import CommandHandler, CallbackContext from core.plugin import Plugin, handler from modules.errorpush import PbClient from utils.decorators.admins import bot_admins_rights_check from utils.log import logger current_dir = os.getcwd() error_log = os.path.join(current_dir, "logs", "error", "error.log") debug_log = os.path.join(current_dir, "logs", "debug", "debug.log") class Log(Plugin): def __init__(self): self.pb_client = PbClient() self.pb_client.sunset = 3600 self.pb_client.max_lines = 10000 async def send_to_pb(self, file_name: str): pb_url = "" try: with open(file_name, "r", encoding="utf-8") as f: pb_url = await self.pb_client.create_pb(f.read()) except Exception as exc: # pylint: disable=W0703 logger.error("上传错误信息至 fars 失败") logger.exception(exc) return pb_url @handler(CommandHandler, command="send_log", block=False) @bot_admins_rights_check async def send_log(self, update: Update, _: CallbackContext): user = update.effective_user logger.info(f"用户 {user.full_name}[{user.id}] send_log 命令请求") message = update.effective_message if os.path.exists(error_log) and os.path.getsize(error_log) > 0: pb_url = await self.send_to_pb(error_log) await message.reply_chat_action(ChatAction.UPLOAD_DOCUMENT) await message.reply_document( open(error_log, mode="rb+"), caption=f"Error Log\n{pb_url}/text" if pb_url else "Error Log" ) else: await message.reply_text("错误日记未找到") if os.path.exists(debug_log) and os.path.getsize(debug_log) > 0: pb_url = await self.send_to_pb(debug_log) await message.reply_chat_action(ChatAction.UPLOAD_DOCUMENT) await message.reply_document( open(debug_log, mode="rb+"), caption=f"Debug Log\n{pb_url}/text" if pb_url else "Debug Log" ) else: await message.reply_text("调试日记未找到")