Skip to content

Commit 60d9140

Browse files
committed
Fixed: Bad Request: message can't be edited
1 parent e0cd507 commit 60d9140

1 file changed

Lines changed: 69 additions & 18 deletions

File tree

handlers/channel_selection.py

Lines changed: 69 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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\nInvalid channel selection.",
96-
parse_mode=ParseMode.MARKDOWN
97-
)
94+
try:
95+
await query.message.edit_text(
96+
"❌ **Error**\n\nInvalid channel selection.",
97+
parse_mode=ParseMode.MARKDOWN
98+
)
99+
except Exception:
100+
await query.message.answer(
101+
"❌ **Error**\n\nInvalid 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")
101119
async 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\nYour 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

Comments
 (0)