Вот мой срезанный код:
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