@RoLOQ

Как отсылать имя того, кто нажал кнопку в группе телеграм?

Вот мой срезанный код:
import telebot
import requests
from bs4 import BeautifulSoup
from telebot import types

bot = telebot.TeleBot('KEY')
d = {"some1": "ссылка1",
 "some2": "ссылка2",  "some3": "ссылка3", "some4":"ссылка4"}

@bot.message_handler(commands=['info'])
def info(message):
	full_page = requests.get(d["some4"])
	soup = BeautifulSoup(full_page.content, 'html.parser', from_encoding='UTF-8')
	convert = soup.findAll("div", {"class": "some_class"})
	markup = types.InlineKeyboardMarkup()
	markup.add(types.InlineKeyboardButton('button1', callback_data='some1'),
		types.InlineKeyboardButton('button2', callback_data='some2'),
		types.InlineKeyboardButton('button3', callback_data='some3'),)
	msg = []
	for i in convert:
		msg.append(i.text)
	bot.send_message(message.chat.id, "\n".join(msg), parse_mode='html', reply_markup=markup)

@bot.callback_query_handler(func=lambda call: True)
def button_do(call):
	full_page = d[call.data]
	site = requests.get(full_page)
	soup = BeautifulSoup(site.content, 'html.parser', from_encoding='UTF-8')
	convert = soup.findAll("div", {"class": "some_class"})
	msg = [] # тут нужно вставить то что я описал ниже
	for i in convert:
		msg.append(i.text)
	bot.send_message(call.message.chat.id, "\n".join(msg), parse_mode='html')

Там где msg в "def button_do" нужно, что бы при нажатии кнопки писалось кто её нажал
если написать "call.message.from_user.username", то будет возвращать username бота, а не пользователя,
если же написать call.message.chat.username , то будет всё хорошо, пока не нажмёш кнопку в группе,
тогда выйдет ошибка TypeError: sequence item 0: expected str instance, NoneType found
  • Вопрос задан
  • 321 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
call.from_user.username
Хоть print(call) сделайте
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы