@@ -184,12 +184,15 @@ def process_submission(self, submission: models.Submission):
184184 'created_utc' : submission .created_utc ,
185185 'permalink' : submission .permalink ,
186186 'url' : submission .url ,
187+ 'link_flair_template_id' : submission .link_flair_template_id if hasattr (
188+ submission , 'link_flair_template_id' ) else None ,
187189 'link_flair_text' : submission .link_flair_text if hasattr (submission , 'link_flair_text' ) else None ,
188190 'link_flair_background_color' : submission .link_flair_background_color if hasattr (
189191 submission , 'link_flair_background_color' ) else None ,
190192 'bot_discord' : existing_submission .get (
191193 'bot_discord' , {'sent' : False , 'sent_utc' : None }),
192194 }
195+ submission_data = self .flair (submission = submission , submission_data = submission_data )
193196 submissions_table .update (submission_data , q .reddit_id == submission .id )
194197 return
195198
@@ -202,6 +205,8 @@ def process_submission(self, submission: models.Submission):
202205 'created_utc' : submission .created_utc ,
203206 'permalink' : submission .permalink ,
204207 'url' : submission .url ,
208+ 'link_flair_template_id' : submission .link_flair_template_id if hasattr (
209+ submission , 'link_flair_template_id' ) else None ,
205210 'link_flair_text' : submission .link_flair_text if hasattr (submission , 'link_flair_text' ) else None ,
206211 'link_flair_background_color' : submission .link_flair_background_color if hasattr (
207212 submission , 'link_flair_background_color' ) else None ,
@@ -220,9 +225,9 @@ def process_submission(self, submission: models.Submission):
220225 except Exception :
221226 logger .exception ("Error awarding XP" )
222227
228+ submission_data = self .flair (submission = submission , submission_data = submission_data )
223229 if os .getenv ('DISCORD_REDDIT_CHANNEL_ID' ):
224230 submission_data = self .discord (submission = submission , submission_data = submission_data )
225- submission_data = self .flair (submission = submission , submission_data = submission_data )
226231 submission_data = self .karma (submission = submission , submission_data = submission_data )
227232
228233 with self .db as db :
@@ -305,11 +310,12 @@ def discord(self, submission: models.Submission, submission_data: dict) -> dict:
305310 submission_data : dict
306311 The submission data to process.
307312 """
308- # get the flair color
309- try :
310- color = int (submission .link_flair_background_color , 16 )
311- except Exception :
312- color = common .colors ['white' ]
313+ flair_data = submission_data .get ('flair' , {})
314+ color = flair_data .get ('color' ) or self .parse_flair_color (submission_data .get ('link_flair_background_color' ))
315+
316+ footer_parts = [f'Posted on r/{ self .subreddit_name } ' ]
317+ if flair_data .get ('text' ):
318+ footer_parts .append (flair_data ['text' ])
313319
314320 try :
315321 redditor = self .fetch_user (name = submission .author )
@@ -329,7 +335,7 @@ def discord(self, submission: models.Submission, submission_data: dict) -> dict:
329335 color = color ,
330336 description = submission .selftext ,
331337 footer = discord .EmbedFooter (
332- text = f'Posted on r/ { self . subreddit_name } ' ,
338+ text = ' - ' . join ( footer_parts ) ,
333339 icon_url = 'https://www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png'
334340 ),
335341 title = submission .title ,
@@ -352,9 +358,31 @@ def discord(self, submission: models.Submission, submission_data: dict) -> dict:
352358
353359 return submission_data
354360
361+ @staticmethod
362+ def parse_flair_color (flair_color : Optional [str ]) -> int :
363+ if not flair_color :
364+ return common .colors ['white' ]
365+
366+ try :
367+ return int (flair_color .removeprefix ('#' ), 16 )
368+ except ValueError :
369+ return common .colors ['white' ]
370+
355371 def flair (self , submission : models .Submission , submission_data : dict ) -> dict :
356- # TODO: implement automatic flair checks or updates from submission metadata.
357- logger .debug ("Reddit flair handling is not implemented for submission=%r" , submission )
372+ flair_template_id = getattr (submission , 'link_flair_template_id' , None )
373+ flair_text = getattr (submission , 'link_flair_text' , None )
374+ flair_background_color = getattr (submission , 'link_flair_background_color' , None )
375+
376+ submission_data ['link_flair_template_id' ] = flair_template_id
377+ submission_data ['link_flair_text' ] = flair_text
378+ submission_data ['link_flair_background_color' ] = flair_background_color
379+ submission_data ['flair' ] = {
380+ 'template_id' : flair_template_id ,
381+ 'text' : flair_text ,
382+ 'background_color' : flair_background_color ,
383+ 'color' : self .parse_flair_color (flair_background_color ),
384+ }
385+
358386 return submission_data
359387
360388 def karma (self , submission : models .Submission , submission_data : dict ) -> dict :
0 commit comments