def _activate_pretty_errors(): import pretty_errors from pretty_errors import default_config from pretty_errors import FILENAME_EXTENDED from pretty_errors import MAGENTA from pretty_errors import RED pretty_errors.configure( filename_display=FILENAME_EXTENDED, line_number_first=True, lines_before=5, lines_after=2, line_color=RED + '> ' + default_config.line_color, code_color=' ' + default_config.line_color, truncate_code=True, inner_exception_separator=True, inner_exception_message=MAGENTA + "\n During handling of the above exception, another exception occurred:\n", display_locals=True) if not pretty_errors.terminal_is_interactive: pretty_errors.mono()
import traceback import requests import html import random import traceback import sys import pretty_errors import io from telegram import Update, InlineKeyboardMarkup, InlineKeyboardButton from telegram.ext import CallbackContext, CommandHandler from AliciaRobot import dispatcher, DEV_USERS, OWNER_ID pretty_errors.mono() class ErrorsDict(dict): "A custom dict to store errors and their count" def __init__(self, *args, **kwargs): self.raw = [] super().__init__(*args, **kwargs) def __contains__(self, error): self.raw.append(error) error.identifier = "".join(random.choices("ABCDEFGHIJKLMNOPQRSTUVWXYZ", k=5)) for e in self: if type(e) is type(error) and e.args == error.args: self[e] += 1 return True self[error] = 0
def fix_stderr_color(color: bool) -> None: if not color: pretty_errors.mono() pretty_errors.output_stderr = sys.stderr