@greeded01

Telebot, ничего не выходит в телеграмме, хотя в консоли выводит значение, как исправить?

Хочу сделать небольшого бота с оповещениями. Состоит он из двух частей, первая которая смотрит цену и исправно водит ее в консоль, вторая часть отвечает за телегу и цикл сообщений, она тоже работает исправно. Но в ходе финального симбиоза никаких надписей, кроме цены в консоли, в телеге ничего не выходит, ошибок или надписи "None" в телеге тоже нету.

Данная функция у меня является ключиком для включения первой части
def cur():
    currency = Currency()
    currency.check_currency()


Эта функция должна была быть неким замочком и все в тории должно было бы работать, но именно при связи с функцией выше возникают проблемы и в телеге ничего не выходит
def f1():
    var = cur()
    return var

now = str(f1())


Если же заменить "var = cur()" на обычное уравнение, то в телеге исправно приходит значение "4"
def f1():
    var = (2+2)
    return var

now = str(f1())


Может это быть связано самой восприятием телегой или же необходимостью это каким-либо способом конвертировать в текст . Очень был бы рад помощи.

Исходный код:
import requests
from bs4 import BeautifulSoup
import telebot
import time
from multiprocessing import *
import schedule

class Currency:
	BTCUSDT = 'https://ru.investing.com/crypto/bitcoin/btc-usd?cid=1035793'
	headers = {"Юзер агент"}

	current_converted_price = 0

	def __init__(self):

		self.current_converted_price = float(self.get_currency_price().replace(".", "").replace(",", "."))

	def get_currency_price(self):
		full_page = requests.get(self.BTCUSDT, headers=self.headers)

		soup = BeautifulSoup(full_page.content, 'html.parser')

		convert = soup.findAll("span", {"id": "last_last"})
		return convert[0].text

	def check_currency(self):
		currency = float(self.get_currency_price().replace(".", "").replace(",", "."))
		print("BTCUSDT=" + str(currency))
		self.check_currency()

def cur():
    currency = Currency()
    currency.check_currency()

def f1():
    var = cur()
    return var

now = str(f1())

API_TOKEN = 'API'
bot = telebot.TeleBot(API_TOKEN)

def start_process():  p1 = Process(target=P_schedule.start_schedule, args=()).start()

class P_schedule():
    def start_schedule():
        schedule.every().day.at("03:00").do(P_schedule.send_message1)
        schedule.every(3).seconds.do(P_schedule.send_message2)
        while True:
            schedule.run_pending()
            time.sleep(1)

    def send_message1():
        bot.send_message(Chat_ID, f'{now}')
    def send_message2():
        bot.send_message(Chat_ID, f'{now}')

@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, 'Нажали start')

if __name__ == '__main__':
    start_process()
    try:
        bot.polling(none_stop=True)
    except:
        pass
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Код даже не доходит до запуска бота, он не уходит дальше вызова check_currency, потому что функция в бесконечном цикле

def check_currency(self):
    currency = float(self.get_currency_price().replace(".", "").replace(",", "."))
    print("BTCUSDT=" + str(currency))
    self.check_currency()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект