Telegram-бот с Python — telegram.error.BadRequest: Сообщение не изменено:Python

Программы на Python
Ответить
Anonymous
 Telegram-бот с Python — telegram.error.BadRequest: Сообщение не изменено:

Сообщение Anonymous »

У меня есть вложенная функция обратного звонка. Каждая встроенная клавиатура попадает в обратный вызов, который использует query.edit_message_text для отправки другого набора встроенных клавиатур. Каждый результат сохраняется в БД с помощью отдельных функций.

Изначально код работает правильно, но когда количество сообщений пользователей увеличивается, большая часть сообщений попадает в исключение -
telegram.error.BadRequest: Сообщение не изменено указанное новое содержимое сообщения и разметка ответа точно такие же, как текущее содержимое и разметка ответа сообщения.

Код обратного вызова -

Код: Выделить всё

def languageSelector(update, context):
# chatID = update.message.chat.id
query = update.callback_query
chatID = query.message.chat_id
callback_data = query.data

print (callback_data)
try:
option = int(callback_data)
c.updateLanguage(chatID, option)
query.edit_message_text(text = c.LanguageSet[option])
context.bot.send_message(chat_id=chatID, text = c.enterTicketNo[option])

except:
languageCode = c.getLanguageCode(chatID)
try:
response = inline_handler(context,update)
print (11)
if response:
keyboard = [[InlineKeyboardButton(c.domestic[languageCode], callback_data="dom"), InlineKeyboardButton(c.intl[languageCode], callback_data="intl")]]
reply_markup = InlineKeyboardMarkup(keyboard, one_time_keyboard=True)
query.edit_message_text(text = c.selectLocation[languageCode], reply_markup=reply_markup)

except Exception as e:
print (e)

if callback_data in ["o1", "o2", "o3", "o4"]:
print (1)
c.UpdateUserRecord(chatID, "condition", callback_data)

keyboard = [[InlineKeyboardButton(c.yes[languageCode], callback_data="True_infected"), InlineKeyboardButton(c.no[languageCode], callback_data="False_infected")]]
reply_markup = InlineKeyboardMarkup(keyboard, one_time_keyboard=True)

query.edit_message_text(text = c.q4[languageCode], reply_markup=reply_markup)

elif callback_data in ["True", "False"]:

if callback_data == "True":
c.UpdateUserRecord(chatID, "past-1", callback_data)
query.edit_message_text(text = c.selectDate[languageCode], reply_markup=telegramcalendar.create_calendar())

else:
data = [callback_data, "na", "na"]
c.UpdateUserRecord(chatID, "past-all", callback_data)
keyboard = [[InlineKeyboardButton(c.yes[languageCode], callback_data="true"), InlineKeyboardButton(c.no[languageCode], callback_data="false")]]
reply_markup = InlineKeyboardMarkup(keyboard, one_time_keyboard=True)
query.edit_message_text(text = c.q3[languageCode], reply_markup=reply_markup)

elif callback_data in ["dom", "intl"]:
if callback_data == "dom":
reply_markup = c.domesticKey(languageCode, "past")
query.edit_message_reply_markup(inline_message_id=update.callback_query.inline_message_id, reply_markup=reply_markup)
else:
c.UpdateUserRecord(chatID, "past-3", callback_data)

keyboard = [[InlineKeyboardButton(c.yes[languageCode], callback_data="true"), InlineKeyboardButton(c.no[languageCode], callback_data="false")]]
reply_markup = InlineKeyboardMarkup(keyboard, one_time_keyboard=True)
query.edit_message_text(text = c.q3[languageCode], reply_markup=reply_markup)

elif callback_data in ["True_infected", "False_infected"]:
c.UpdateUserRecord(chatID, "infected", 1 if callback_data == "True_infected" else 0)

keyboard = [[InlineKeyboardButton(c.yes[languageCode], callback_data="True"), InlineKeyboardButton(c.no[languageCode], callback_data="False")]]
reply_markup = InlineKeyboardMarkup(keyboard, one_time_keyboard=True)

query.edit_message_text(text = c.q2[languageCode], reply_markup=reply_markup)

elif callback_data in ["dom-post", "intl-post"]:
if callback_data == "dom-post":
reply_markup = c.domesticKey(languageCode, "post")
query.edit_message_reply_markup(inline_message_id=update.callback_query.inline_message_id, reply_markup=reply_markup)
else:
c.UpdateUserRecord(chatID, "post-2", "dom" if callback_data == "dom-post" else "intl")
query.edit_message_text(text = c.thanksForResponse[languageCode])
context.bot.send_photo(chat_id=chatID, photo=open(c.advisory[languageCode], 'rb'), timeout=70)
context.bot.send_message(chat_id=chatID,  text = c.helpline[languageCode])

elif callback_data in ["true", "false"]:
data = [callback_data, "Pune"]
c.UpdateUserRecord(chatID, "post-1", callback_data)

if callback_data == "true":
keyboard = [[InlineKeyboardButton(c.domestic[languageCode], callback_data="dom-post"), InlineKeyboardButton(c.intl[languageCode], callback_data="intl-post")]]
reply_markup = InlineKeyboardMarkup(keyboard, one_time_keyboard=True)
query.edit_message_text(text = c.selectLocation[languageCode], reply_markup=reply_markup)

else:
query.edit_message_text(text = c.thanksForResponse[languageCode])
context.bot.send_photo(chat_id=chatID, photo=open(c.advisory[languageCode], 'rb'), timeout=70)
context.bot.send_message(chat_id=chatID, text = c.helpline[languageCode])

elif callback_data in c.states_past:
c.UpdateUserRecord(chatID, "past-3", callback_data)
keyboard = [[InlineKeyboardButton(c.yes[languageCode], callback_data="true"), InlineKeyboardButton(c.no[languageCode], callback_data="false")]]
reply_markup = InlineKeyboardMarkup(keyboard, one_time_keyboard=True)
query.edit_message_text(text = c.q3[languageCode], reply_markup=reply_markup)

elif callback_data in c.states_post:
c.UpdateUserRecord(chatID, "post-2", callback_data.strip("_"))
query.edit_message_text(text = c.thanksForResponse[languageCode])
context.bot.send_photo(chat_id=chatID, photo=open(c.advisory[languageCode], 'rb'), timeout=70)
context.bot.send_message(chat_id=chatID, text = c.helpline[languageCode])

else:
query.edit_message_text(text = c.thanksForResponse[languageCode])
context.bot.send_photo(chat_id=chatID, photo=open(c.advisory[languageCode], 'rb'), timeout=70)
context.bot.send_message(chat_id=chatID, text = c.helpline[languageCode])
Пожалуйста, помогите с этим.

Подробнее здесь: https://stackoverflow.com/questions/608 ... t-modified
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»