У меня есть inline-кнопки, которые должны менять состояния сообщения. Попробовал несколько вариантов, ничего не работает, если чего-то нужного для решения не добавил, напишите, добавлю.
класс юзер:
class User:
registry = []
def __init__(self, tg_id):
self.tg_id = tg_id
self.buisnes = []
self.registry.append(self)
def get_user(tg_id):
for user in User.registry:
if user.tg_id == tg_id:
return user
def user_is_know(tg_id):
for user in User.registry:
if user.tg_id == tg_id:
return True
return False
def get_delo_by_text(self, delo_text):
for delo in self.buisnes:
if delo.text == delo_text:
return delo
def get_delo_by_id(self, delo_id):
for delo in self.buisnes:
if delo.delo_id == delo_id:
return delo
Класс дело:
class Delo:
STATUS_DELETE = 0
STATUS_ACTIVE = 1
STATUS_COMPLETED = 2
def __init__(self, text):
self.text = text
self.delo_id = uuid.uuid1()
self.status = self.STATUS_ACTIVE
print(self.delo_id)
Создание клавиатуры маркап и инлайн(она показывается):
elif message.text == 'Посмотреть дела':
keyboard = telebot.types.ReplyKeyboardMarkup(True)
for itm in user.buisnes:
keyboard.row(itm.text)
keyboard.row('Назад')
bot.send_message(message.chat.id, 'Выберите дело', reply_markup=keyboard)
elif message.text in[delo.text for delo in user.buisnes]:
text = {message.text}
deluga = types.InlineKeyboardMarkup(row_width=2)
deluga.add(types. InlineKeyboardButton(text='Выполнить', callback_data='completed_'))
deluga.add(types.InlineKeyboardButton(text='Удалить', callback_data='delete_'))
deluga.add(types.InlineKeyboardButton(text='Меню', callback_data='menu'))
bot.send_message(message.chat.id, text, reply_markup=deluga)
Обработка кнопок(она не работает, написал одну кнопку):
@bot.callback_query_handler(func=lambda call: True)
def callback_key(call):
user = User.get_user(message.chat.id)
if user is None:
user = User(message.chat.id)
if call.data == 'completed_':
bot.answer_callback_query(call.id, 'Задание выполнено!')
delo_id = call.data.replace('completed_', '')
delo = user.get_delo_by_id(delo_id)
user.buisnes.remove(delo)
ругается на юзера, пробовал добавить аргумент message в callback_key, но он ругается и на это, не понимаю как быть?
Вообще, задача это отработка кнопок, то есть если человек нажимает на кнопку "выполненно", задание больше не отображается, занимаюсь программированием неделю, вот эта часть вообще не поддается, уже раза 3 ее переписывал и бесполезно, задачи не исчезают из списка
Ошибка, которую выдает:
user = User.get_user(message.chat.id)
NameError: name 'message' is not defined
Если добавить message в функцию после call:
TypeError: callback_key() missing 1 required positional argument: 'message'