|
45 | 45 | from helpful_modules.restart_the_bot import RestartTheBot |
46 | 46 | from helpful_modules.save_files import FileSaver |
47 | 47 | from helpful_modules.file_log import AuditLog |
| 48 | +from .rate_limit import RateLimiter |
48 | 49 |
|
49 | 50 | from ._error_logging import log_error |
50 | 51 | from .errors import ( |
@@ -81,10 +82,13 @@ class TheDiscordMathProblemBot(disnake.ext.commands.Bot): |
81 | 82 | total_stats: CommandStats | None |
82 | 83 | queue: MessageQueue |
83 | 84 | closing_things: list[typing.Callable] |
84 | | - rate_limiters: list["RateLimiters"] |
| 85 | + rate_limiters: list["RateLimiter"] |
| 86 | + global_rate_limiter: RateLimiter |
| 87 | + appeal_rate_limiter: RateLimiter |
85 | 88 |
|
86 | 89 | def __init__(self, *args, **kwargs): |
87 | 90 | self.is_closing = False |
| 91 | + |
88 | 92 | self.file_saver = None |
89 | 93 | self.appeal_questions = {} |
90 | 94 | self.tasks = kwargs.pop("tasks") |
@@ -120,6 +124,8 @@ def __init__(self, *args, **kwargs): |
120 | 124 | self.total_stats = None |
121 | 125 | self.this_session = None |
122 | 126 | self.queue = MessageQueue() |
| 127 | + self.appeal_rate_limiter = RateLimiter(self) |
| 128 | + self.global_rate_limiter = RateLimiter(self) |
123 | 129 | self.initialize_stats() |
124 | 130 | # self.trusted_users = kwargs.get("trusted_users", None) |
125 | 131 | # if not self.trusted_users and self.trusted_users != []: |
@@ -185,7 +191,7 @@ async def on_ready(self): |
185 | 191 | await log_error(begroup) |
186 | 192 | except Exception as e: |
187 | 193 | self.log.exception( |
188 | | - "The following exception happened while trying to register appeal views:", |
| 194 | + f"The following exception happened while trying to register appeal views: {traceback.format_exc()}", |
189 | 195 | e, |
190 | 196 | ) |
191 | 197 | await log_error(e) |
@@ -600,32 +606,35 @@ async def on_slash_command_error(self, inter, error): |
600 | 606 | if isinstance(error, KeyboardInterrupt): |
601 | 607 | raise error |
602 | 608 | try: |
603 | | - dict_args = await base_on_error(inter, error) |
604 | | - except Exception as e: |
605 | | - print(traceback.format_exception(e)) |
606 | | - raise e |
607 | | - |
608 | | - # print(dict_args) |
609 | | - try: |
610 | | - await inter.send(**dict_args) |
611 | | - return |
612 | | - except BaseException as be: |
613 | | - await log_error(be) |
614 | | - # os._exit(1) |
615 | | - try: |
616 | | - if inter.response.is_done(): |
617 | | - await inter.followup.send(**dict_args) |
618 | | - else: |
619 | | - await inter.response.send_message(**dict_args) |
620 | | - except AttributeError as err: |
621 | | - print(error, err) |
622 | | - await log_error(error, f"error_logs/{str(datetime.datetime.now())}") |
623 | | - await inter.send( |
624 | | - "An error occurred, and the error message couldn't be sent. However, it has been saved!" |
625 | | - ) |
| 609 | + try: |
| 610 | + dict_args = await base_on_error(inter, error) |
| 611 | + except Exception as e: |
| 612 | + print(traceback.format_exception(e)) |
| 613 | + raise e |
626 | 614 |
|
| 615 | + print(dict_args) |
| 616 | + try: |
| 617 | + await inter.send(**dict_args) |
| 618 | + return |
| 619 | + except BaseException as be: |
| 620 | + await log_error(be) |
| 621 | + # os._exit(1) |
| 622 | + try: |
| 623 | + if inter.response.is_done(): |
| 624 | + await inter.followup.send(**dict_args) |
| 625 | + else: |
| 626 | + await inter.response.send_message(**dict_args) |
| 627 | + except AttributeError as err: |
| 628 | + print(error, err) |
| 629 | + await log_error(error, f"error_logs/{str(datetime.datetime.now())}") |
| 630 | + await inter.send( |
| 631 | + "An error occurred, and the error message couldn't be sent. However, it has been saved!" |
| 632 | + ) |
627 | 633 | raise ExceptionGroup(error, err) |
628 | | - |
| 634 | + except Exception as e: |
| 635 | + await inter.send("An unexpected error occurred.") |
| 636 | + await log_error(e, f"error_logs/{str(datetime.datetime.now())}") |
| 637 | + print("\n".join(traceback.format_exception(e))) |
629 | 638 | async def on_error(self, event, *args, **kwargs): |
630 | 639 | print(f"Error in {event}... uh oh", file=stderr) |
631 | 640 | error = sys.exc_info() |
|
0 commit comments