@a1exapp1e

Почему бот выводит function at 0x?

При запуске кода и отправки команды боту, бот выдает
import telebot, requests, bs4
from bs4 import BeautifulSoup

bot = telebot.TeleBot("TOKEN")

def pars():
    page_link = 'https://random.cat/'
    response = requests.get(page_link)
    html = response.content
    soup = BeautifulSoup(html, 'html.parser')
    obj = soup.find('img', attrs={'id': 'cat'})
    return print(obj.attrs['src'])
    
@bot.message_handler(commands=['rcat'])
def randomcat(message):
    bot.send_message(message.chat.id, pars)

bot.polling(none_stop=True)
  • Вопрос задан
  • 8824 просмотра
Решения вопроса 2
Dr_Elvis
@Dr_Elvis Куратор тега Python
В гугле забанен
В return уберите print, он там не нужен
Ответ написан
@koldop
bot.send_message(message.chat.id, pars())
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kiriharu
Python backend, Linux enjoyer
Потому что вы передаете объект функции, а не вызываете её.
А еще, вам нужно убрать в return функцию print - она просто выводит данные на экран.

Вроде как правильный код:

import telebot, requests, bs4
from bs4 import BeautifulSoup

bot = telebot.TeleBot("TOKEN")

def pars():
    page_link = 'https://random.cat/'
    response = requests.get(page_link)
    html = response.content
    soup = BeautifulSoup(html, 'html.parser')
    obj = soup.find('img', attrs={'id': 'cat'})
    return obj.attrs['src']
    
@bot.message_handler(commands=['rcat'])
def randomcat(message):
    bot.send_message(message.chat.id, pars())

bot.polling(none_stop=True)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы