@@ -91,30 +91,68 @@ async def handle_single_channel_select(query: types.CallbackQuery):
9191 channel_index = int (query .data .split ("_" )[- 1 ])
9292 await publish_to_channels (query .message , [channel_index ], user_id = query .from_user .id )
9393 except (ValueError , IndexError ):
94- await query .message .edit_text (
95- "❌ **Error**\n \n Invalid channel selection." ,
96- parse_mode = ParseMode .MARKDOWN
97- )
94+ try :
95+ await query .message .edit_text (
96+ "❌ **Error**\n \n Invalid channel selection." ,
97+ parse_mode = ParseMode .MARKDOWN
98+ )
99+ except Exception :
100+ await query .message .answer (
101+ "❌ **Error**\n \n Invalid channel selection." ,
102+ parse_mode = ParseMode .MARKDOWN
103+ )
104+ except Exception as e :
105+ # Handle any other errors during publishing
106+ try :
107+ await query .message .edit_text (
108+ f"❌ **Publishing Error**\n \n { str (e )} " ,
109+ parse_mode = ParseMode .MARKDOWN
110+ )
111+ except Exception :
112+ await query .message .answer (
113+ f"❌ **Publishing Error**\n \n { str (e )} " ,
114+ parse_mode = ParseMode .MARKDOWN
115+ )
98116
99117
100118@router .callback_query (lambda query : query .data == "select_all_channels" )
101119async def handle_all_channels_select (query : types .CallbackQuery ):
102120 """Handle all channels selection"""
103121 await query .answer ()
104122
105- user_info = await db .users .find_one ({"user_id" : query .from_user .id })
106- connected_channels = user_info .get ("connected_channels" , []) if user_info else []
107-
108- if not connected_channels :
109- await query .message .edit_text (
110- "❌ **No Connected Channels**" ,
111- parse_mode = ParseMode .MARKDOWN
112- )
113- return
123+ try :
124+ user_info = await db .users .find_one ({"user_id" : query .from_user .id })
125+ connected_channels = user_info .get ("connected_channels" , []) if user_info else []
126+
127+ if not connected_channels :
128+ try :
129+ await query .message .edit_text (
130+ "❌ **No Connected Channels**" ,
131+ parse_mode = ParseMode .MARKDOWN
132+ )
133+ except Exception :
134+ await query .message .answer (
135+ "❌ **No Connected Channels**" ,
136+ parse_mode = ParseMode .MARKDOWN
137+ )
138+ return
139+
140+ # Select all channels
141+ channel_indices = list (range (len (connected_channels )))
142+ await publish_to_channels (query .message , channel_indices , user_id = query .from_user .id )
114143
115- # Select all channels
116- channel_indices = list (range (len (connected_channels )))
117- await publish_to_channels (query .message , channel_indices , user_id = query .from_user .id )
144+ except Exception as e :
145+ # Handle any errors during the process
146+ try :
147+ await query .message .edit_text (
148+ f"❌ **Error**\n \n { str (e )} " ,
149+ parse_mode = ParseMode .MARKDOWN
150+ )
151+ except Exception :
152+ await query .message .answer (
153+ f"❌ **Error**\n \n { str (e )} " ,
154+ parse_mode = ParseMode .MARKDOWN
155+ )
118156
119157
120158@router .callback_query (lambda query : query .data == "multi_select_start" )
@@ -307,7 +345,15 @@ async def publish_to_channels(message: types.Message, channel_indices, user_id=N
307345 else :
308346 status_text = f"📤 **Publishing to { len (selected_channels )} channels**\n \n Your post is being sent..."
309347
310- await message .edit_text (status_text , parse_mode = ParseMode .MARKDOWN )
348+ # Try to edit the message, if that fails, send a new message
349+ try :
350+ await message .edit_text (status_text , parse_mode = ParseMode .MARKDOWN )
351+ except Exception as edit_error :
352+ # If editing fails, send a new message
353+ await message .answer (status_text , parse_mode = ParseMode .MARKDOWN )
354+ # Update message reference for result display
355+ message = await message .answer ("Processing..." )
356+ await message .delete ()
311357
312358 # Publish to each selected channel
313359 success_count = 0
@@ -348,7 +394,12 @@ async def publish_to_channels(message: types.Message, channel_indices, user_id=N
348394 channel_name = failed ["channel" ].get ("title" , failed ["channel" ].get ("username" , "Unknown" ))
349395 result_text += f"• { channel_name } : { failed ['error' ][:50 ]} ...\n "
350396
351- await message .edit_text (result_text , parse_mode = ParseMode .MARKDOWN )
397+ # Show results with better error handling
398+ try :
399+ await message .edit_text (result_text , parse_mode = ParseMode .MARKDOWN )
400+ except Exception as edit_error :
401+ # If editing fails, send a new message
402+ await message .answer (result_text , parse_mode = ParseMode .MARKDOWN )
352403 if success_count > 0 :
353404 # Clear post data after successful publish
354405 from utils .data_store import clear_user_data
0 commit comments