|
1 | 1 | import discord |
| 2 | +import json |
2 | 3 | from datetime import datetime |
3 | 4 |
|
4 | 5 | from services.api import UserProgressGameInfo, UserCompletionRecent, UserProfile, UserCompletionProgress, GameUnlocks |
@@ -66,20 +67,19 @@ def process_game_mastery(game, user_completion, profile, mastery_embeds, mastery |
66 | 67 | mastery_embed = create_mastery_embed(game, user_completion.user, profile, game_progress, mastered_count, mastery_time, highest_unlock, mastery_percentage) |
67 | 68 | mastery_embeds.append((datetime.strptime(game_progress.highest_award_date, "%Y-%m-%dT%H:%M:%S%z"), mastery_embed)) |
68 | 69 |
|
69 | | - |
70 | 70 | async def send_achievement_embeds(achievement_embeds, achievements_channel): |
71 | 71 | achievement_embeds.sort(key=lambda x: x[0]) |
72 | 72 | if achievement_embeds: |
73 | 73 | logger.info(f"Sending {len(achievement_embeds)} embeds to {achievements_channel}") |
74 | | - for i in range(0, len(achievement_embeds), 10): |
75 | | - await achievements_channel.send(embeds=[embed[1] for embed in achievement_embeds[i:i+10]]) |
| 74 | + for embed in achievement_embeds: |
| 75 | + await achievements_channel.send(embed=embed[1]) # Send each embed individually |
76 | 76 |
|
77 | 77 | async def send_mastery_embeds(mastery_embeds, mastery_channel): |
78 | 78 | mastery_embeds.sort(key=lambda x: x[0]) |
79 | 79 | if mastery_embeds: |
80 | 80 | logger.info(f"Sending {len(mastery_embeds)} mastery embeds to {mastery_channel}") |
81 | | - for i in range(0, len(mastery_embeds), 10): |
82 | | - await mastery_channel.send(embeds=[embed[1] for embed in mastery_embeds[i:i+10]]) |
| 81 | + for embed in mastery_embeds: |
| 82 | + await mastery_channel.send(embed=embed[1]) # Send each embed individually |
83 | 83 |
|
84 | 84 | def get_game_details(game_id, username, api_username, api_key): |
85 | 85 | try: |
@@ -120,10 +120,32 @@ def create_achievement_embed(game, user, achievement, profile, current, total): |
120 | 120 | percentage = (completion / game.total_achievements) * 100 |
121 | 121 | unlock_percentage = (game.achievements[achievement.title]['NumAwardedHardcore'] / game.total_players_hardcore) * 100 if game.total_players_hardcore else 0 |
122 | 122 | most_common_color = get_discord_color(achievement.badge_url) |
123 | | - embed = discord.Embed(description=f"**[{achievement.game_title}]({achievement.game_url})** ({game.remap_console_name()}) \n\n{achievement.description}\n\nUnlocked by {game.achievements[achievement.title]['NumAwardedHardcore']} out of {game.total_players_hardcore} players ({unlock_percentage:.2f}%)", color=most_common_color) |
124 | | - |
| 123 | + |
| 124 | + # Load emoji mappings |
| 125 | + with open('emoji.json') as f: |
| 126 | + emoji_mappings = json.load(f) |
| 127 | + # Get the emoji ID based on console name, with a general emoji if no specific match is found |
| 128 | + console_name = game.remap_console_name() |
| 129 | + emoji_id = emoji_mappings.get(console_name.lower()) |
| 130 | + emoji = f"<:{console_name}:{emoji_id}>" if emoji_id else ":video_game:" |
| 131 | + |
| 132 | + embed = discord.Embed( |
| 133 | + description=( |
| 134 | + f"**[{achievement.game_title}]({achievement.game_url})** " |
| 135 | + f"{emoji}\n\n" |
| 136 | + f"{achievement.description}\n\n" |
| 137 | + f"Unlocked by {game.achievements[achievement.title]['NumAwardedHardcore']} out of " |
| 138 | + f"{game.total_players_hardcore} players ({unlock_percentage:.2f}%)" |
| 139 | + ), |
| 140 | + color=most_common_color |
| 141 | + ) |
| 142 | + |
125 | 143 | # Check if achievement type is 'Missable' |
126 | | - achievement_title = f"[{achievement.title}]({achievement.url}) (m)" if achievement.type == "missable" else f"[{achievement.title}]({achievement.url})" |
| 144 | + achievement_title = ( |
| 145 | + f"[{achievement.title}]({achievement.url}) (m)" |
| 146 | + if achievement.type == "missable" |
| 147 | + else f"[{achievement.title}]({achievement.url})" |
| 148 | + ) |
127 | 149 |
|
128 | 150 | embed.add_field(name="Achievement", value=achievement_title, inline=True) |
129 | 151 | embed.add_field(name="Points", value=f"{achievement.points} ({achievement.retropoints_format})", inline=True) |
|
0 commit comments