@@ -102,6 +102,11 @@ async def update_presence():
102102 await bot .change_presence (activity = discord .Activity (type = discord .ActivityType .watching , name = f"les nombres rigolos sur { len (bot .guilds )} serveurs." ))
103103 await asyncio .sleep (3600 )
104104
105+ async def send_error_embed (ctx , message , error ):
106+ embed = discord .Embed (title = "Erreur" , description = message , color = discord .Color .red ())
107+ embed .add_field (name = "Detail" , value = str (error ), inline = False )
108+ await ctx .send (embed = embed )
109+
105110@bot .event
106111async def on_ready ():
107112 await bot .change_presence (activity = discord .Activity (type = discord .ActivityType .watching , name = f"les nombres rigolos sur { len (bot .guilds )} serveurs." ))
@@ -166,114 +171,146 @@ async def on_message(message):
166171
167172@bot .tree .command (name = "ping" , description = "Renvoie la latence du bot." )
168173async def ping (ctx ):
169- logger .info (f"Commande ping utilisée sur { ctx .guild .id } " )
170- await ctx .send (f"Pong ! Latence: { round (bot .latency * 1000 )} ms" )
174+ try :
175+ logger .info (f"Commande ping utilisée sur { ctx .guild .id } " )
176+ await ctx .send (f"Pong ! Latence: { round (bot .latency * 1000 )} ms" )
177+ except Exception as e :
178+ logger .error (f"Erreur lors de l'envoi de la commande ping: { e } " )
179+ await send_error_embed (ctx , "Erreur lors de l'envoi de la commande `ping`" , e )
171180
172181@bot .tree .command (name = "info" , description = "Affiche le cluster, la shard et l'uptime du bot." )
173182async def info (interaction : discord .Interaction ):
174- logger .info (f"Commande info utilisée par { interaction .user } " )
175- data = load_data ()
176-
177- region = data .get ("info" , {}).get ("region" , "N/A" )
178- cluster = data .get ("info" , {}).get ("cluster" , "N/A" )
179- shard = data .get ("info" , {}).get ("shard" , "N/A" )
180- uptime = get_uptime ()
183+ try :
184+ logger .info (f"Commande info utilisée par { interaction .user } " )
185+ data = load_data ()
186+
187+ region = data .get ("info" , {}).get ("region" , "N/A" )
188+ cluster = data .get ("info" , {}).get ("cluster" , "N/A" )
189+ shard = data .get ("info" , {}).get ("shard" , "N/A" )
190+ uptime = get_uptime ()
181191
182- embed = discord .Embed (title = "Informations du Bot" , color = discord .Color .green ())
183- embed .add_field (name = "Region" , value = region , inline = True )
184- embed .add_field (name = "Cluster" , value = cluster , inline = True )
185- embed .add_field (name = "Shard" , value = shard , inline = True )
186- embed .add_field (name = "Uptime" , value = uptime , inline = True )
192+ embed = discord .Embed (title = "Informations du Bot" , color = discord .Color .green ())
193+ embed .add_field (name = "Region" , value = region , inline = True )
194+ embed .add_field (name = "Cluster" , value = cluster , inline = True )
195+ embed .add_field (name = "Shard" , value = shard , inline = True )
196+ embed .add_field (name = "Uptime" , value = uptime , inline = True )
187197
188- await interaction .response .send_message (embed = embed )
198+ await interaction .response .send_message (embed = embed )
199+ except Exception as e :
200+ logger .error (f"Erreur lors de l'envoi de la commande info: { e } " )
201+ await send_error_embed (interaction , "Erreur lors de l'envoi de la commande `info`" , e )
189202
190203@bot .tree .command (name = "leaderboard_server" , description = "Affiche le classement des utilisateurs avec le plus de 69 sur ce serveur." )
191204async def leaderboard_server (interaction : discord .Interaction ):
192- logger .info (f"Commande leaderboard_server utilisée sur { interaction .guild .id } " )
193- data = load_data ()
194- guild_id = str (interaction .guild .id )
205+ try :
206+ logger .info (f"Commande leaderboard_server utilisée sur { interaction .guild .id } " )
207+ data = load_data ()
208+ guild_id = str (interaction .guild .id )
195209
196- if guild_id not in data ['stats' ]:
197- logger .warning (f"Aucune donnée pour le serveur { guild_id } " )
198- await interaction .response .send_message ("Aucune donnée disponible pour ce serveur." )
199- return
210+ if guild_id not in data ['stats' ]:
211+ logger .warning (f"Aucune donnée pour le serveur { guild_id } " )
212+ await interaction .response .send_message ("Aucune donnée disponible pour ce serveur." )
213+ return
200214
201- leaderboard = sorted (data ['stats' ][guild_id ].items (), key = lambda x : x [1 ]['count_69' ], reverse = True )
202- embed = discord .Embed (title = "Classement des utilisateurs avec le plus de 69 sur ce serveur" , color = discord .Color .blue ())
215+ leaderboard = sorted (data ['stats' ][guild_id ].items (), key = lambda x : x [1 ]['count_69' ], reverse = True )
216+ embed = discord .Embed (title = "Classement des utilisateurs avec le plus de 69 sur ce serveur" , color = discord .Color .blue ())
203217
204- for user_id , stats in leaderboard [:10 ]:
205- user = await bot .fetch_user (int (user_id ))
206- embed .add_field (name = user .display_name , value = f"{ stats ['count_69' ]} fois" , inline = False )
218+ for user_id , stats in leaderboard [:10 ]:
219+ user = await bot .fetch_user (int (user_id ))
220+ embed .add_field (name = user .display_name , value = f"{ stats ['count_69' ]} fois" , inline = False )
207221
208- await interaction .response .send_message (embed = embed )
222+ await interaction .response .send_message (embed = embed )
223+ except Exception as e :
224+ logger .error (f"Erreur lors de l'envoi de la commande leaderboard_server: { e } " )
225+ await send_error_embed (interaction , "Erreur lors de l'envoi de la commande `leaderboard_server`" , e )
209226
210227@bot .tree .command (name = "leaderboard_global" , description = "Affiche le classement global des utilisateurs avec le plus de 69." )
211228async def leaderboard_global (interaction : discord .Interaction ):
212- logger .info (f"Commande leaderboard_global utilisée par { interaction .user } " )
213- data = load_data ()
214- global_stats = {}
229+ try :
230+ logger .info (f"Commande leaderboard_global utilisée par { interaction .user } " )
231+ data = load_data ()
232+ global_stats = {}
215233
216- for guild_stats in data ['stats' ].values ():
217- for user_id , stats in guild_stats .items ():
218- if isinstance (stats , dict ) and 'count_69' in stats :
219- if user_id not in global_stats :
220- global_stats [user_id ] = 0
221- global_stats [user_id ] += stats ['count_69' ]
234+ for guild_stats in data ['stats' ].values ():
235+ for user_id , stats in guild_stats .items ():
236+ if isinstance (stats , dict ) and 'count_69' in stats :
237+ if user_id not in global_stats :
238+ global_stats [user_id ] = 0
239+ global_stats [user_id ] += stats ['count_69' ]
222240
223- leaderboard = sorted (global_stats .items (), key = lambda x : x [1 ], reverse = True )
224- embed = discord .Embed (title = "Classement global des utilisateurs avec le plus de 69" , color = discord .Color .gold ())
241+ leaderboard = sorted (global_stats .items (), key = lambda x : x [1 ], reverse = True )
242+ embed = discord .Embed (title = "Classement global des utilisateurs avec le plus de 69" , color = discord .Color .gold ())
225243
226- for user_id , count in leaderboard [:10 ]:
227- user = await bot .fetch_user (int (user_id ))
228- embed .add_field (name = user .display_name , value = f"{ count } fois" , inline = False )
244+ for user_id , count in leaderboard [:10 ]:
245+ user = await bot .fetch_user (int (user_id ))
246+ embed .add_field (name = user .display_name , value = f"{ count } fois" , inline = False )
229247
230- await interaction .response .send_message (embed = embed )
248+ await interaction .response .send_message (embed = embed )
249+ except Exception as e :
250+ logger .error (f"Erreur lors de l'envoi de la commande leaderboard_global: { e } " )
251+ await send_error_embed (interaction , "Erreur lors de l'envoi de la commande `leaderboard_global`" , e )
231252
232253@bot .tree .command (name = "config" , description = "Affiche ou configure les paramètres du bot." )
233254async def config (interaction : discord .Interaction ):
234- logger .info (f"Commande config utilisée sur { interaction .guild .id } " )
235- data = load_data ()
236- guild_id = str (interaction .guild .id )
237- config = get_guild_config (guild_id , data )
255+ try :
256+ logger .info (f"Commande config utilisée sur { interaction .guild .id } " )
257+ data = load_data ()
258+ guild_id = str (interaction .guild .id )
259+ config = get_guild_config (guild_id , data )
238260
239- embed = discord .Embed (title = "Configuration du Bot" , color = discord .Color .blue ())
240- embed .add_field (name = "Envoi des messages" , value = "Public" if config ['send_public' ] else "Privé" , inline = True )
241- embed .add_field (name = "Envoi des messages activé" , value = "Oui" if config ['send_message' ] else "Non" , inline = True )
242- embed .add_field (name = "Réactions activées" , value = "Oui" if config ['enable_reactions' ] else "Non" , inline = True )
243- await interaction .response .send_message (embed = embed )
261+ embed = discord .Embed (title = "Configuration du Bot" , color = discord .Color .blue ())
262+ embed .add_field (name = "Envoi des messages" , value = "Public" if config ['send_public' ] else "Privé" , inline = True )
263+ embed .add_field (name = "Envoi des messages activé" , value = "Oui" if config ['send_message' ] else "Non" , inline = True )
264+ embed .add_field (name = "Réactions activées" , value = "Oui" if config ['enable_reactions' ] else "Non" , inline = True )
265+ await interaction .response .send_message (embed = embed )
266+ except Exception as e :
267+ logger .error (f"Erreur lors de l'envoi de la commande config: { e } " )
268+ await send_error_embed (interaction , "Erreur lors de l'envoi de la commande `config`" , e )
244269
245270@bot .tree .command (name = "set_send_public" , description = "Configure si les messages doivent être envoyés en public ou en privé." )
246271@app_commands .describe (send_public = "Définir si les messages sont envoyés en public (True) ou en privé (False)." )
247272async def set_send_public (interaction : discord .Interaction , send_public : bool ):
248- logger .info (f"Modification de send_public à { send_public } sur { interaction .guild .id } " )
249- data = load_data ()
250- guild_id = str (interaction .guild .id )
251- config = get_guild_config (guild_id , data )
252- config ['send_public' ] = send_public
253- save_data (data )
254- await interaction .response .send_message (f"Envoi des messages { 'public' if send_public else 'privé' } configuré." )
273+ try :
274+ logger .info (f"Modification de send_public à { send_public } sur { interaction .guild .id } " )
275+ data = load_data ()
276+ guild_id = str (interaction .guild .id )
277+ config = get_guild_config (guild_id , data )
278+ config ['send_public' ] = send_public
279+ save_data (data )
280+ await interaction .response .send_message (f"Envoi des messages { 'public' if send_public else 'privé' } configuré." )
281+ except Exception as e :
282+ logger .error (f"Erreur lors de la modification de send_public: { e } " )
283+ await send_error_embed (interaction , "Erreur lors de la modification de `send_public`" , e )
255284
256285@bot .tree .command (name = "set_send_message" , description = "Active ou désactive l'envoi des messages." )
257286@app_commands .describe (send_message = "Définir si l'envoi des messages est activé (True) ou désactivé (False)." )
258287async def set_send_message (interaction : discord .Interaction , send_message : bool ):
259- logger .info (f"Modification de send_message à { send_message } sur { interaction .guild .id } " )
260- data = load_data ()
261- guild_id = str (interaction .guild .id )
262- config = get_guild_config (guild_id , data )
263- config ['send_message' ] = send_message
264- save_data (data )
265- await interaction .response .send_message (f"Envoi des messages { 'activé' if send_message else 'désactivé' } ." )
288+ try :
289+ logger .info (f"Modification de send_message à { send_message } sur { interaction .guild .id } " )
290+ data = load_data ()
291+ guild_id = str (interaction .guild .id )
292+ config = get_guild_config (guild_id , data )
293+ config ['send_message' ] = send_message
294+ save_data (data )
295+ await interaction .response .send_message (f"Envoi des messages { 'activé' if send_message else 'désactivé' } ." )
296+ except Exception as e :
297+ logger .error (f"Erreur lors de la modification de send_message: { e } " )
298+ await send_error_embed (interaction , "Erreur lors de la modification de `send_message`" , e )
266299
267300@bot .tree .command (name = "set_enable_reactions" , description = "Active ou désactive les réactions." )
268301@app_commands .describe (enable_reactions = "Activer ou désactiver les réactions (True ou False)." )
269302async def set_enable_reactions (interaction : discord .Interaction , enable_reactions : bool ):
270- logger .info (f"Modification de enable_reactions à { enable_reactions } sur { interaction .guild .id } " )
271- data = load_data ()
272- guild_id = str (interaction .guild .id )
273- config = get_guild_config (guild_id , data )
274- config ['enable_reactions' ] = enable_reactions
275- save_data (data )
276- await interaction .response .send_message (f"Réactions { 'activées' if enable_reactions else 'désactivées' } ." )
303+ try :
304+ logger .info (f"Modification de enable_reactions à { enable_reactions } sur { interaction .guild .id } " )
305+ data = load_data ()
306+ guild_id = str (interaction .guild .id )
307+ config = get_guild_config (guild_id , data )
308+ config ['enable_reactions' ] = enable_reactions
309+ save_data (data )
310+ await interaction .response .send_message (f"Réactions { 'activées' if enable_reactions else 'désactivées' } ." )
311+ except Exception as e :
312+ logger .error (f"Erreur lors de la modification de enable_reactions: { e } " )
313+ await send_error_embed (interaction , "Erreur lors de la modification de `enable_reactions`" , e )
277314
278315@bot .event
279316async def on_command_error (ctx , error ):
0 commit comments