mirror of
https://github.com/PaiGramTeam/PaiGram.git
synced 2024-11-25 01:29:42 +00:00
56 lines
2.3 KiB
Python
56 lines
2.3 KiB
Python
import os
|
|
|
|
from telegram import Update
|
|
from telegram.constants import ChatAction
|
|
from telegram.ext import CommandHandler, CallbackContext
|
|
|
|
from core.config import config
|
|
from core.plugin import Plugin, handler
|
|
from modules.errorpush import PbClient, PbClientException
|
|
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(config.error.pb_url, 3600, 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 PbClientException as exc:
|
|
logger.warning("上传错误信息至 fars 失败", exc_info=exc)
|
|
except Exception as exc:
|
|
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("调试日记未找到")
|