как получить username нажавшего на inline кнопку в чате python telegram

появилась проблема с python telebot. В чат отправляется заявка на вступление в команду, она работает но я хочу чтобы при нажатии на кнопку "принять" текст менялся на "Принято(@username того кто нажал на эту кнопку получилось только так введите сюда описание изображения

вот код кнопки

   messtext = call.message.text[call.message.text.find('|'):]
   messtext = messtext.split('|')[1]
   messtext = messtext.rpartition(':')[0]
   messtext = messtext.replace(':','',1)
   messtext = messtext.split(' ', 1)[0]
   ur = call.message.chat.username
   print(ur)
   sql.execute(f"UPDATE users SET status=0 WHERE id={messtext}")
   db.commit()
   sql.execute(f"SELECT login FROM users WHERE id = '{messtext}'")
   usernm = sql.fetchall()[0][0]
   sql.execute(f"SELECT answer FROM users WHERE id = '{messtext}'")
   answer = sql.fetchall()[0][0]
   sql.execute(f"SELECT answer2 FROM users WHERE id = '{messtext}'")
   answer2 = sql.fetchall()[0][0]
   sql.execute(f"SELECT answer3 FROM users WHERE id = '{messtext}'")
   answer3 = sql.fetchall()[0][0]
   sql.execute(f"SELECT answer4 FROM users WHERE id = '{messtext}'")
   answer4 = sql.fetchall()[0][0]
   bot.edit_message_text(
   f'''? <b>Псс.. У нас здесь заявка!</b>\n\n''' \
   f'''@{usernm}|<code>{messtext}</code>: \n''' \
   '''<b>┌ ? Откуда узнал о нас:</b> '''+str(answer)+'''\n''' \
   '''<b>├ ? Cсылка на lolz.guru:</b> '''+str(answer2)+'''\n''' \
   '''<b>├ ? Опыт:</b> '''+str(answer3)+'''\n''' \
   '''<b>└ ⏳ Сколько времени будет уделять тиме:</b> '''+str(answer4)+'''\n\n''' \
   f'''<b>✅ Заявка одобрена!(@{call.message.from_user.username})</b>'''
   , config.amschatid, call.message.message_id, parse_mode='HTML')

Ответы (1 шт):

Автор решения: Violet
@bot.message_handler(commands=['start'])
def start_kb(message):
    kb = InlineKeyboardMarkup()
    kb.add(InlineKeyboardButton(text='Моя кнопка', callback_data='my_button'))

    bot.send_message(message.chat.id, 'Извольте выбрать', reply_markup=kb)

Все нужные вам данные содержатся в объекте call:

Простейший пример обработки нажатия на кнопку и вывод данных пользователя нажавшего кнопку:

@bot.callback_query_handler(func=lambda call: True)
def callback_inline(call):
    if call.data == 'my_button':
        # print(call)
        print(call.from_user.id)
        print(call.from_user.first_name)
        print(call.from_user.last_name)
        print(call.from_user.username)
  • id
  • Имя
  • Фамилия
  • Никнейм

Если у пользователя не указано имя и/или фамилия и/или никнейм, то будет None.

→ Ссылка