Compare commits

..

3 commits

Author SHA1 Message Date
1dfa03bc17 bot: db: add missing type annotation for bulk_update
All checks were successful
/ test (push) Successful in 18s
Signed-off-by: Max R. Carrara <max@aequito.sh>
2025-03-11 22:57:33 +01:00
80918f7a42 bot: main: register event handlers inside separate function
Makes the overall program flow nicer.

Signed-off-by: Max R. Carrara <max@aequito.sh>
2025-03-11 22:33:52 +01:00
14be2289a9 bot: main: fix description not being split
Signed-off-by: Max R. Carrara <max@aequito.sh>
2025-03-11 22:33:26 +01:00
2 changed files with 57 additions and 53 deletions

View file

@ -128,7 +128,10 @@ class BaseModel(peewee.Model):
@classmethod @classmethod
def bulk_update( def bulk_update(
cls, model_list: Iterable[Self], fields: Iterable, batch_size: int | None = None cls,
model_list: Iterable[Self],
fields: Iterable[peewee.Field | str],
batch_size: int | None = None,
): ):
def lazy(models: Iterable[Self]) -> Iterable[Self]: def lazy(models: Iterable[Self]) -> Iterable[Self]:
now = datetime.now() now = datetime.now()

View file

@ -81,7 +81,8 @@ def setup_bot() -> commands.Bot:
] ]
description = "\n\n".join( description = "\n\n".join(
" ".join(line.strip() for line in paragraph) for paragraph in desc_paragraphs " ".join(line.strip() for line in paragraph.split("\n"))
for paragraph in desc_paragraphs
) )
command_prefix = Environment.bot_prefix() command_prefix = Environment.bot_prefix()
@ -110,60 +111,56 @@ def read_token_file() -> str:
raise e raise e
bot = setup_bot() # Note: pyright will complain about the async functions below not being accessed;
# this is a false positive, as the @bot.event decorators actually register and
# use the functions just fine. Unfortunately, it's not possible to silence the
@bot.event # warning, so I'll have to deal with it.
async def on_error(event: str, *args, **kwargs): #
# ruff doesn't complain, though.
def register_event_handlers(bot: commands.Bot):
@bot.event
async def on_error(event: str, *args, **kwargs):
_log.error( _log.error(
f"Encountered unexpected exception while processing event {event} ({args = }; {kwargs = }):", f"Encountered unexpected exception while processing event {event} ({args = }; {kwargs = }):",
exc_info=sys.exc_info(), exc_info=sys.exc_info(),
) )
@bot.event
@bot.event async def on_ready():
async def on_ready():
_log.info("Ready: Connected to Discord") _log.info("Ready: Connected to Discord")
@bot.event
@bot.event async def on_resumed():
async def on_resumed():
_log.info("Resumed: Session with Discord resumed") _log.info("Resumed: Session with Discord resumed")
@bot.event
@bot.event async def on_shard_ready(shard_id: int):
async def on_shard_ready(shard_id: int):
_log.info(f"Ready: Shard ID {shard_id} connected to Discord") _log.info(f"Ready: Shard ID {shard_id} connected to Discord")
@bot.event
@bot.event async def on_shard_resumed(shard_id: int):
async def on_shard_resumed(shard_id: int):
_log.info(f"Resumed: Shard ID {shard_id} resumed session with Discord") _log.info(f"Resumed: Shard ID {shard_id} resumed session with Discord")
@bot.event
@bot.event async def on_message(message: discord.Message):
async def on_message(message: discord.Message):
_log.debug(f"Read message ({message.id = }): {message.content}") _log.debug(f"Read message ({message.id = }): {message.content}")
@bot.event
@bot.event async def on_command(ctx: commands.Context):
async def on_command(ctx: commands.Context):
_log.debug( _log.debug(
f"Command invoked:" f"Command invoked:"
f" {ctx.command = }; {ctx.message.author = }; {ctx.message.id = }" f" {ctx.command = }; {ctx.message.author = }; {ctx.message.id = }"
) )
@bot.event
@bot.event async def on_command_completion(ctx: commands.Context):
async def on_command_completion(ctx: commands.Context):
_log.debug( _log.debug(
f"Command completed:" f"Command completed:"
f" {ctx.command = }; {ctx.message.author = }; {ctx.message.id = }" f" {ctx.command = }; {ctx.message.author = }; {ctx.message.id = }"
) )
@bot.event
@bot.event async def on_command_error(ctx: commands.Context, error: commands.CommandError):
async def on_command_error(ctx: commands.Context, error: commands.CommandError):
_log.error( _log.error(
f"Failed to run command:" f"Failed to run command:"
f" {ctx.command = }; {ctx.message.author = }; {ctx.message.id = }", f" {ctx.command = }; {ctx.message.author = }; {ctx.message.id = }",
@ -174,6 +171,10 @@ async def on_command_error(ctx: commands.Context, error: commands.CommandError):
async def main(): async def main():
_log.debug("Entered main()") _log.debug("Entered main()")
bot = setup_bot()
register_event_handlers(bot)
token = read_token_file() token = read_token_file()
async with bot: async with bot: