как получить 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.