@bot.callback_query_handler(func=lambda c: True)
def inline(c):
if c.data == 'savepower':
cid = c.message.chat.id
con = sqlite3.connect('users.sqlite')
c = con.cursor()
c.execute('SELECT * FROM users WHERE id='+str(cid)+'')
row = c.fetchone()
con.close()
if int(row[1])==0:
bot.send_message(cid ,'Сохраните потребление.', reply_markup=markuppower)
else:
bot.send_message(cid, 'Save power.' , reply_markup=markuppower)
elif c.data == 'accountback':
cid = c.message.chat.id
con = sqlite3.connect('users.sqlite')
c = con.cursor()
c.execute('SELECT * FROM users WHERE id='+str(cid)+'')
row = c.fetchone()
con.close()
if int(row[1])==0:
keyboard = types.InlineKeyboardMarkup(row_width=2)
k1 = types.InlineKeyboardButton(text="Настройки ", callback_data='settingsaccount')
keyboard.add(k1)
bot.edit_message_text(chat_id=c.message.chat.id, message_id=c.message.message_id, text='*Ваш профиль:*', parse_mode='Markdown', reply_markup=keyboard)
else:
keyboard = types.InlineKeyboardMarkup(row_width=2)
k1 = types.InlineKeyboardButton(text="Settings ", callback_data='settingsaccount')
keyboard.add(k1)
bot.edit_message_text(chat_id=c.message.chat.id, message_id=c.message.message_id, text='*Your profile:*', parse_mode='Markdown', reply_markup=keyboard)
Использую sqlite3 для сохранения пользовательского языка в бд.
c.data == 'savepower': — выполняется спокойно. И для русского и для английского. Подключается к бд, забирает 0 или 1 и отвечает пользователю
(bot.send_message) согласно if... else..
Но в
c.data == 'accountback': мне нужно, чтобы бот редактировал исходное сообщение
(bot.edit_message_text) и вот тут бот выдаёт ошибку
'sqlite3.Cursor' object has no attribute 'message'.
В похожей конструкции как
c.data == 'savepower': была такая же ошибка, но она была из-за лишнего
cid = c.message.chat.id и решилась простым удалением оного. Здесь же я никак не могу понять как решить эту проблему.