drop @try_, use a custom logging handler to handle all errors.
This commit is contained in:
@@ -8,9 +8,13 @@ tracemalloc.start()
|
||||
load_dotenv("config.env")
|
||||
|
||||
from app.config import Config # NOQA
|
||||
from app.core import LOGGER # NOQA
|
||||
from app.core.db import DB, DB_CLIENT, CustomDB # NOQA
|
||||
from app.core import Message # NOQA
|
||||
|
||||
from app.core.logger import getLogger # NOQA
|
||||
|
||||
LOGGER = getLogger("PLAIN-UB")
|
||||
|
||||
from app.core.client.client import BOT # NOQA
|
||||
|
||||
|
||||
@@ -20,5 +24,3 @@ if "com.termux" not in os.environ.get("PATH", ""):
|
||||
uvloop.install()
|
||||
|
||||
bot: BOT = BOT()
|
||||
|
||||
from app.core.decorators.try_except import try_ # NOQA
|
||||
|
||||
@@ -14,6 +14,9 @@ class _Config:
|
||||
self.doc: str = doc or "Not Documented."
|
||||
self.sudo: bool = sudo
|
||||
|
||||
def __str__(self):
|
||||
return json.dumps(self.__dict__, indent=4, ensure_ascii=False, default=str)
|
||||
|
||||
def __init__(self):
|
||||
self.CMD_DICT: dict[str, _Config.CMD] = {}
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
from app.core.client import filters
|
||||
from app.core.logger import LOGGER
|
||||
|
||||
from app.core.types.message import Message # NOQA
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
import asyncio
|
||||
import traceback
|
||||
from functools import wraps
|
||||
|
||||
from app import bot
|
||||
|
||||
|
||||
def try_(func):
|
||||
if asyncio.iscoroutinefunction(func):
|
||||
|
||||
@wraps(func)
|
||||
async def run_func(*args, **kwargs):
|
||||
try:
|
||||
result = await func(*args, **kwargs)
|
||||
return result
|
||||
except asyncio.exceptions.CancelledError:
|
||||
text, type = f"<b>FUNC</b>: {func.__name__} Cancelled.", "info"
|
||||
except BaseException:
|
||||
text, type = (
|
||||
f"<b>FUNC</b>: {func.__name__}"
|
||||
f"\n<b>#TRACEBACK</b>:\n<pre language=python>{traceback.format_exc()}</pre>",
|
||||
"error",
|
||||
)
|
||||
if text:
|
||||
await bot.log_text(text=text, name="traceback.txt", type=type)
|
||||
|
||||
else:
|
||||
|
||||
@wraps(func)
|
||||
def run_func(*args, **kwargs):
|
||||
try:
|
||||
result = func(*args, **kwargs)
|
||||
return result
|
||||
except asyncio.exceptions.CancelledError:
|
||||
text, type = f"<b>FUNC</b>: {func.__name__} Cancelled.", "info"
|
||||
except BaseException:
|
||||
text, type = (
|
||||
f"<b>FUNC</b>: {func.__name__}"
|
||||
f"\n<b>#TRACEBACK</b>:\n<pre language=python>{traceback.format_exc()}</pre>",
|
||||
"error",
|
||||
)
|
||||
if text:
|
||||
asyncio.run_coroutine_threadsafe(
|
||||
coro=bot.log_text(text=text, name="traceback.txt", type=type),
|
||||
loop=bot.loop,
|
||||
)
|
||||
|
||||
return run_func
|
||||
@@ -1,14 +1,43 @@
|
||||
import os
|
||||
from logging import INFO, WARNING, StreamHandler, basicConfig, getLogger, handlers
|
||||
import asyncio
|
||||
from logging import (
|
||||
ERROR,
|
||||
INFO,
|
||||
WARNING,
|
||||
Handler,
|
||||
StreamHandler,
|
||||
basicConfig,
|
||||
getLogger,
|
||||
handlers,
|
||||
)
|
||||
|
||||
os.makedirs("logs", exist_ok=True)
|
||||
|
||||
LOGGER = getLogger("PLAIN_UB")
|
||||
|
||||
class TgErrorHandler(Handler):
|
||||
def emit(self, log_record):
|
||||
if log_record.levelno < ERROR:
|
||||
return
|
||||
from app import bot
|
||||
if not bot.is_connected:
|
||||
return
|
||||
text = (
|
||||
f"#{log_record.levelname} #TRACEBACK"
|
||||
f"\n<b>Line No</b>: <code>{log_record.lineno}</code>"
|
||||
f"\n<b>Func</b>: <code>{log_record.funcName}</code>"
|
||||
f"\n<b>Module</b>: <code>{log_record.module}</code>"
|
||||
f"\n<b>Time</b>: <code>{log_record.asctime}</code>"
|
||||
f"\n<b>Error Message</b>:\n<pre language=python>{log_record.message}</pre>"
|
||||
)
|
||||
asyncio.run_coroutine_threadsafe(
|
||||
coro=bot.log_text(text=text, name="traceback.txt"), loop=bot.loop
|
||||
)
|
||||
|
||||
|
||||
basicConfig(
|
||||
level=INFO,
|
||||
format="[%(asctime)s] [%(levelname)s] [%(name)s]: %(message)s",
|
||||
datefmt="%y-%m-%d %H:%M:%S",
|
||||
format="[%(levelname)s] [%(asctime)s] [%(name)s] [%(module)s]: %(message)s",
|
||||
datefmt="%d-%m-%y %I:%M:%S %p",
|
||||
handlers={
|
||||
handlers.RotatingFileHandler(
|
||||
filename="logs/app_logs.txt",
|
||||
@@ -19,6 +48,7 @@ basicConfig(
|
||||
delay=0,
|
||||
),
|
||||
StreamHandler(),
|
||||
TgErrorHandler(),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ from io import StringIO
|
||||
|
||||
from pyrogram.enums import ParseMode
|
||||
|
||||
from app import Config, bot, BOT, Message, DB, DB_CLIENT, try_ # isort:skip
|
||||
from app import Config, bot, BOT, Message, DB, DB_CLIENT # isort:skip
|
||||
from app.utils import shell # isort:skip
|
||||
from app.utils.aiohttp_tools import aio # isort:skip
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from pyrogram import filters
|
||||
|
||||
from app import BOT, Config, Message, bot, try_
|
||||
from app import BOT, Config, Message, bot
|
||||
from app.plugins.sudo.users import SUDO_USERS
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ async def disable_su(bot: BOT, message: Message):
|
||||
)
|
||||
|
||||
|
||||
@try_
|
||||
@bot.on_message(
|
||||
filters=filters.command(commands="enable_su", prefixes=Config.SUDO_TRIGGER)
|
||||
& filters.create(
|
||||
|
||||
@@ -5,7 +5,7 @@ from pyrogram import filters
|
||||
from pyrogram.enums import ChatType, MessageEntityType, ParseMode
|
||||
from pyrogram.errors import MessageIdInvalid
|
||||
|
||||
from app import BOT, Config, CustomDB, Message, bot, try_
|
||||
from app import BOT, Config, CustomDB, Message, bot
|
||||
|
||||
LOGGER = CustomDB("COMMON_SETTINGS")
|
||||
|
||||
@@ -61,7 +61,6 @@ basic_filters = (
|
||||
)
|
||||
|
||||
|
||||
@try_
|
||||
@bot.on_message(
|
||||
filters=basic_filters
|
||||
& filters.private
|
||||
@@ -75,7 +74,6 @@ async def pm_logger(bot: BOT, message: Message):
|
||||
tag_filter = filters.create(lambda _, __, ___: Config.TAG_LOGGER)
|
||||
|
||||
|
||||
@try_
|
||||
@bot.on_message(
|
||||
filters=(basic_filters & filters.reply & tag_filter) & ~filters.private, group=2
|
||||
)
|
||||
@@ -89,7 +87,6 @@ async def reply_logger(bot: BOT, message: Message):
|
||||
message.continue_propagation()
|
||||
|
||||
|
||||
@try_
|
||||
@bot.on_message(
|
||||
filters=(basic_filters & filters.mentioned & tag_filter) & ~filters.private, group=2
|
||||
)
|
||||
@@ -104,7 +101,6 @@ async def mention_logger(bot: BOT, message: Message):
|
||||
message.continue_propagation()
|
||||
|
||||
|
||||
@try_
|
||||
@bot.on_message(
|
||||
filters=(basic_filters & (filters.text | filters.media) & tag_filter)
|
||||
& ~filters.private,
|
||||
@@ -117,7 +113,6 @@ async def username_logger(bot: BOT, message: Message):
|
||||
message.continue_propagation()
|
||||
|
||||
|
||||
@try_
|
||||
def cache_message(message: Message):
|
||||
m_id = message.chat.id
|
||||
if len(MESSAGE_CACHE[m_id]) > 10:
|
||||
@@ -126,8 +121,9 @@ def cache_message(message: Message):
|
||||
MESSAGE_CACHE[m_id].append(message)
|
||||
|
||||
|
||||
@try_
|
||||
async def runner():
|
||||
await asyncio.sleep(20)
|
||||
raise TypeError()
|
||||
if not (Config.TAG_LOGGER or Config.PM_LOGGER):
|
||||
return
|
||||
last_pm_logged_id = 0
|
||||
@@ -186,7 +182,6 @@ async def log_chat(message: Message):
|
||||
await log_deleted_message(message, data=(mention, u_id))
|
||||
|
||||
|
||||
@try_
|
||||
async def log_deleted_message(message: Message, data: tuple | None = None):
|
||||
if data:
|
||||
mention, u_id = data
|
||||
|
||||
@@ -1,12 +1,15 @@
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
from io import BytesIO
|
||||
|
||||
from aiohttp import ClientSession, web
|
||||
|
||||
from app import LOGGER, Config
|
||||
from app import Config
|
||||
from app.utils.media_helper import get_filename
|
||||
|
||||
LOGGER = logging.getLogger("PLAIN-UB")
|
||||
|
||||
|
||||
class Aio:
|
||||
def __init__(self):
|
||||
|
||||
Reference in New Issue
Block a user