Skip to content

Commit 35a0440

Browse files
committed
adding a separate discord channel for the leveling utility tasks
1 parent caeb962 commit 35a0440

2 files changed

Lines changed: 63 additions & 32 deletions

File tree

wall_e/extensions/leveling.py

Lines changed: 61 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import discord
88
import pytz
9-
from discord import NotFound, app_commands
9+
from discord import NotFound, app_commands, Guild
1010
from discord.errors import DiscordServerError
1111
from discord.ext import commands, tasks
1212

@@ -29,8 +29,17 @@ def __init__(self):
2929
self.warn_log_file_absolute_path = log_info[2]
3030
self.error_log_file_absolute_path = log_info[3]
3131
self.logger.info("[Leveling __init__()] initializing Leveling")
32+
33+
processing_lurkers_log_info = Loggers.get_logger(logger_name="Leveling_processing_lurkers")
34+
self.processing_lurkers_logger = processing_lurkers_log_info[0]
35+
self.processing_lurkers_debug_log_file_absolute_path = processing_lurkers_log_info[1]
36+
37+
outdated_profile_pics_log_info = Loggers.get_logger(logger_name="Leveling_outdated_profile_pics")
38+
self.outdated_profile_pics_logger = outdated_profile_pics_log_info[0]
39+
self.outdated_profile_pics_debug_log_file_absolute_path = outdated_profile_pics_log_info[1]
40+
3241
self.levels_have_been_changed = False
33-
self.guild = None
42+
self.guild: Guild | None = None
3443
self.user_points = None
3544
self.levels = None
3645
self.xp_system_ready = False
@@ -72,6 +81,24 @@ async def upload_error_logs(self):
7281
self.logger, self.guild, bot, wall_e_config, self.error_log_file_absolute_path, "leveling_error"
7382
)
7483

84+
@commands.Cog.listener(name="on_ready")
85+
async def upload_processing_lurkers_debug_logs(self):
86+
while self.guild is None:
87+
await asyncio.sleep(2)
88+
await start_file_uploading(
89+
self.logger, self.guild, bot, wall_e_config, self.processing_lurkers_debug_log_file_absolute_path,
90+
"upload_processing_lurkers"
91+
)
92+
93+
@commands.Cog.listener(name="on_ready")
94+
async def upload_outdated_profile_pics_debug_logs(self):
95+
while self.guild is None:
96+
await asyncio.sleep(2)
97+
await start_file_uploading(
98+
self.logger, self.guild, bot, wall_e_config, self.outdated_profile_pics_debug_log_file_absolute_path,
99+
"upload_outdated_profile_pics"
100+
)
101+
75102
@commands.Cog.listener(name="on_ready")
76103
async def updating_database_and_cache(self):
77104
"""
@@ -139,7 +166,7 @@ async def create_council_channel(self):
139166
"leveling"
140167
)
141168
self.council_channel = discord.utils.get(
142-
self.guild.channels, id=council_channel_id
169+
self.guild.channels if self.guild else None, id=council_channel_id
143170
)
144171
self.logger.debug(
145172
f"[Leveling create_council_channel()] text channel {self.council_channel} acquired."
@@ -163,7 +190,7 @@ async def get_leveling_avatar_channel(self):
163190
'leveling_website_avatar_images'
164191
)
165192
self.levelling_website_avatar_channel: discord.TextChannel = discord.utils.get(
166-
self.guild.channels, id=leveling_website_avatar_images_channel_id
193+
self.guild.channels if self.guild else None, id=leveling_website_avatar_images_channel_id
167194
)
168195
self.logger.debug(
169196
f"[Leveling get_leveling_avatar_channel()] bot channel {self.levelling_website_avatar_channel} acquired."
@@ -481,7 +508,7 @@ async def process_leveling_profile_data_for_lurkers(self):
481508
self.user_points is None or self.levelling_website_avatar_channel is None or self.guild is None or
482509
self.bucket_update_in_progress
483510
)
484-
self.logger.debug(
511+
self.processing_lurkers_logger.debug(
485512
f"[Leveling process_leveling_profile_data_for_lurkers()] background task starting "
486513
f"self.user_points is None = {self.user_points is None} | self.levelling_website_avatar_channel is None "
487514
f"= {self.levelling_website_avatar_channel is None} | self.guild is None = {self.guild is None} | "
@@ -490,22 +517,24 @@ async def process_leveling_profile_data_for_lurkers(self):
490517
)
491518
if not_ready_to_process_lurkers:
492519
return
493-
self.logger.debug("[Leveling process_leveling_profile_data_for_lurkers()] background task proceeding")
520+
self.processing_lurkers_logger.debug(
521+
"[Leveling process_leveling_profile_data_for_lurkers()] background task proceeding"
522+
)
494523

495-
await self._set_bucket_numbers()
524+
await self._set_bucket_numbers(self.processing_lurkers_logger)
496525

497526
entry = await self._get_current_bucket_number()
498527

499528
user_ids_to_update = await UserPoint.get_users_with_current_bucket_number(entry.bucket_number_completed)
500529

501-
self.logger.debug(
530+
self.processing_lurkers_logger.debug(
502531
f"[Leveling process_leveling_profile_data_for_lurkers()] {user_ids_to_update} "
503532
f"potential updates retrieved for bucket {entry.bucket_number_completed}"
504533
)
505-
await self._update_users(user_ids_to_update)
534+
await self._update_users(self.processing_lurkers_logger, user_ids_to_update)
506535
await ProfileBucketInProgress.async_save(entry)
507536

508-
async def _set_bucket_numbers(self):
537+
async def _set_bucket_numbers(self, logger):
509538
"""
510539
Assigns a bucket_number to any new UserPoints that don't yet have one
511540
@@ -526,15 +555,15 @@ async def _set_bucket_numbers(self):
526555
self.bucket_update_in_progress = True
527556
users_to_update = self._setup_bucket_number_for_new_users()
528557

529-
self.logger.debug(
558+
logger.debug(
530559
f"[Leveling _set_bucket_numbers()] updating {len(users_to_update)} user_point objects' bucket_number"
531560
)
532561
await UserPoint.async_bulk_update(users_to_update, ["bucket_number"])
533-
self.logger.debug(
562+
logger.debug(
534563
"[Leveling process_leveling_profile_data_for_lurkers()] null bucket_number has been updated"
535564
)
536565
self.bucket_update_in_progress = False
537-
self.logger.debug(
566+
logger.debug(
538567
f"[Leveling _set_bucket_numbers()] updated {len(users_to_update)} user_point objects' date_to_check"
539568
)
540569

@@ -615,15 +644,15 @@ async def _get_current_bucket_number(self) -> ProfileBucketInProgress:
615644
entry.bucket_number_completed = 1
616645
return entry
617646

618-
async def _update_users(self, updated_user_ids):
647+
async def _update_users(self, logger, updated_user_ids):
619648
"""
620649
iterates through the given list of user_ids and updates them
621650
:param updated_user_ids:
622651
:return:
623652
"""
624653
total_number_of_updates_needed = len(updated_user_ids)
625654
for index, user_id in enumerate(updated_user_ids):
626-
self.logger.debug(
655+
logger.debug(
627656
f"[Leveling process_leveling_profile_data_for_lurkers()] attempting to get updated "
628657
f"user_point profile data for member {user_id} "
629658
f"{index + 1}/{total_number_of_updates_needed} "
@@ -637,7 +666,7 @@ async def _update_users(self, updated_user_ids):
637666
except DiscordServerError:
638667
pass
639668
if member:
640-
await self._update_member_profile_data(member, user_id, index, total_number_of_updates_needed)
669+
await self._update_member_profile_data(logger, member, user_id, index, total_number_of_updates_needed)
641670

642671
@tasks.loop(seconds=2)
643672
async def process_leveling_profile_data_for_active_users(self):
@@ -651,21 +680,21 @@ async def process_leveling_profile_data_for_active_users(self):
651680
updated_user_logs = await UpdatedUser.get_updated_user_logs()
652681
total_number_of_updates_needed = len(updated_user_logs)
653682
for index, update_user in enumerate(updated_user_logs):
654-
updated_user_log_id = update_user[0]
683+
updated_user_log_id = update_user[0] # noqa: F841
655684
updated_user_id = update_user[1]
656685
self.logger.debug(
657686
f"[Leveling process_leveling_profile_data_for_active_users()] attempting to get updated "
658687
f"user_point profile data for member {updated_user_id} "
659688
f"{index + 1}/{total_number_of_updates_needed} "
660689
)
661690
try:
662-
member = await self.guild.fetch_member(updated_user_id)
691+
member = await self.guild.fetch_member(updated_user_id) # noqa: F841
663692
except NotFound:
664-
member = await bot.fetch_user(updated_user_id)
665-
await self._update_member_profile_data(
666-
member, updated_user_id, index, total_number_of_updates_needed,
667-
updated_user_log_id=updated_user_log_id
668-
)
693+
member = await bot.fetch_user(updated_user_id) # noqa: F841
694+
# await self._update_member_profile_data(
695+
# logger, member, updated_user_id, index, total_number_of_updates_needed,
696+
# updated_user_log_id=updated_user_log_id
697+
# )
669698

670699
@tasks.loop(seconds=5)
671700
async def process_outdated_profile_pics(self):
@@ -675,14 +704,14 @@ async def process_outdated_profile_pics(self):
675704
number_of_users_to_update = len(user_ids_to_update)
676705
if number_of_users_to_update == 0:
677706
return
678-
self.logger.debug(
707+
self.outdated_profile_pics_logger.debug(
679708
f"[Leveling process_outdated_profile_pics()] {number_of_users_to_update} users with outdated CND links"
680709
f" to update"
681710
)
682-
await self._update_users(user_ids_to_update)
711+
await self._update_users(self.outdated_profile_pics_logger, user_ids_to_update)
683712

684-
async def _update_member_profile_data(self, member, updated_user_id, index, total_number_of_updates_needed,
685-
updated_user_log_id=None):
713+
async def _update_member_profile_data(self, logger, member, updated_user_id, index,
714+
total_number_of_updates_needed, updated_user_log_id=None):
686715
"""
687716
Attempts to determine if the member's leveling data in the database can be updated and if not, record any of
688717
the errors detected as a result
@@ -699,7 +728,7 @@ async def _update_member_profile_data(self, member, updated_user_id, index, tota
699728
if member:
700729
try:
701730
if self.user_points[member.id].leveling_update_attempt >= 5:
702-
self.logger.error(
731+
logger.error(
703732
f"[Leveling _update_member_profile_data()] "
704733
f"attempt {self.user_points[member.id].leveling_update_attempt} to update the member profile"
705734
f" data in the database for member {member} {index + 1}/{total_number_of_updates_needed}"
@@ -708,23 +737,23 @@ async def _update_member_profile_data(self, member, updated_user_id, index, tota
708737
# leveling_update_attempt is reset to 0 in update_leveling_profile_info if member is successfully
709738
# updated THIS time
710739
user_updated = await self.user_points[member.id].update_leveling_profile_info(
711-
self.logger, member, self.levelling_website_avatar_channel,
740+
logger, member, self.levelling_website_avatar_channel,
712741
updated_user_log_id=updated_user_log_id
713742
)
714743
if user_updated:
715-
self.logger.debug(
744+
logger.debug(
716745
f"[Leveling _update_member_profile_data()] updated the member profile data"
717746
f" in the database for member {member} {index + 1}/{total_number_of_updates_needed}"
718747
)
719748
except Exception as e:
720-
self.logger.error(
749+
logger.error(
721750
f"[Leveling _update_member_profile_data()] unable to update the member profile"
722751
f" data in the database for member {member} {index + 1}/{total_number_of_updates_needed} "
723752
f"due to error:\n{e}"
724753
)
725754
else:
726755
self.user_points[member.id].leveling_update_attempt += 1
727-
self.logger.warn(
756+
logger.warn(
728757
f"[Leveling _update_member_profile_data()] attempt "
729758
f"{self.user_points[member.id].leveling_update_attempt}: unable to update the member profile data"
730759
f" in the database for member {updated_user_id} {index + 1}/{total_number_of_updates_needed}"

wall_e/utilities/bot_channel_manager.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ def __init__(self, config, bot):
8585
"here_debug",
8686
"here_warn",
8787
"here_error",
88+
"upload_processing_lurkers",
89+
"upload_outdated_profile_pics",
8890
"leveling_debug",
8991
"leveling_warn",
9092
"leveling_error",

0 commit comments

Comments
 (0)