66
77import discord
88import pytz
9- from discord import NotFound , app_commands
9+ from discord import NotFound , app_commands , Guild
1010from discord .errors import DiscordServerError
1111from 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 } "
0 commit comments