VLad1slav
(владислав)
29.Март.2020 05:23:51
#1
Я пытался написать бота который должен был отслеживать курс доллара.
Использовал библиотеку PyTelegramBotAIP
Бот не реагирует не на какие команды
прошу указать на мои ошибки в коде и объяснить как исправить положение, заранее благодарю за помощь
КОД:
import telebot
import config
bot = telebot.TeleBot(config.TG_TOKEN)
@bot.massage_handler(commands=['start'])
def welcom(message):
bot.send_message(message.chat.id, 'Хай бейби, хай!'.format(message.from_user, bot.get_me()),parse_mode='html')
import erqests
from_bs4 import Beautifuls
import time
class curency:
DOLLAR_RUB = 'https://yandex.ru/search/?clid=2297897&text=rehc%20ljkkfhf&l10n=ru&lr=65'
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36 OPR/67.0.3575.105'}
current_converted_print = 0
difference = 5
def _init_(self):
self.current_converted_print = float(self.get_currency_price())
def get_currency_print(self):
def check_currency()
full_page = requests.get(DOLLAR_RUB, headers=self.headers)
soup = deautidulSoup (full_page.content, 'html.parser')
@bot.massage_handler(content_types=['курс доллара'])
def check_currensy(self):
currency = float(self.get_currency_prise().replace(",","."))
if cuttency >= self.corrent_coverted_price + self.difference:
bot.send_message(message.chat.id"Курс сильно вырос, готовь заначку ")
elif cuttency <= self.corrent_coverted_price - self.difference:
bot.send_message(message.chat.id"Курс сильно упал, можно закупаться видео-картами")
convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2})
bot.send_message(message.chat.id"Керюха, по курс один доллар равен" + str(currensy))
time.sleep(3)
self.check_currency()
currency = currency()
currency.check_currency()
Вы предлагаете переписать Ваш код с картинки?
AlexP
(Alex P.)
29.Март.2020 09:04:56
#3
И этот код скорее всего вообще не запустится потому что с отступами фигня какая-то.
https://pythonworld.ru/osnovy/sintaksis-yazyka-python.html
AlexP
(Alex P.)
29.Март.2020 17:23:47
#4
Как и говорил, куча синтаксических ошибок из-за странных отступов, пропущенного пробела в импорте и т.д.
Чтобы бот реагировал на что-то, надо чтобы он сначала запустился
Вы где этот код взяли? И как запускаете, что не получаете ошибок?
VLad1slav
(владислав)
30.Март.2020 03:22:15
#5
Большое спасибо, обязательно учту все свои ошибки
VLad1slav
(владислав)
01.Апрель.2020 13:56:54
#6
Я прошу прощения, но у меня возникла новая проблема, буду благодарен за вашу помощь
я думаю, что я исправил синтаксические ошибки, однако теперь при запуске бот возникает ошибка
Traceback (most recent call last):File "D:\слава ситису\Курс.py", line 7, in <module>@bot.massage_handler(commands=['start'])AttributeError: 'TeleBot' object has no attribute 'massage_handler'
вот переписанный код:
import telebot
import config
bot = telebot.TeleBot(config.TG_TOKEN)
@bot.massage_handler(commands=['start'])
def welcom(message):
bot.send_message(message.chat.id, 'Хай бейби, хай!')
import erqests
import Beautifuls
import time
class curency:
DOLLAR_RUB = 'https://yandex.ru/search/?clid=2297897&text=rehc%20ljkkfhf&l10n=ru&lr=65'
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36 OPR/67.0.3575.105'}
current_converted_print = 0
difference = 5
def _init_(self):
self.current_converted_print = float(self.get_currency_price())
def get_currency_print(self):
full_page = requests.get(DOLLAR_RUB, headers=self.headers)
soup = deautidulSoup (full_page.content, 'html.parser')
convert = soup.findAll("span", {"class": "DFlfde", "class": "SwHCTb", "data-precision": 2})
def check_currensy(self):
bot.send_message(message.chat.id ("Керюха, по курс один доллар равен") + str(currensy))
currency = float(self.get_currency_prise().replace(",","."))
if cuttency >= self.corrent_coverted_price + self.difference:
bot.send_message(message.chat.id("Курс сильно вырос, готовь заначку "))
elif cuttency <= self.corrent_coverted_price - self.difference:bot.send_message(message.chat.id("Курс сильно упал, можно закупаться видео-картами"))
time.sleep(3)
check_currency()
currency = currency()
currency.check_currency()
bot.polling(none_stop=True)
Sciv
(Dmitry)
01.Апрель.2020 14:05:10
#7
VLad1slav:
massage_handler
Может быть, me ssage_handler?
VLad1slav
(владислав)
01.Апрель.2020 14:13:41
#9
теперь выводит другую ошибку
Traceback (most recent call last):
File “D:\слава ситису\Курс.py”, line 12, in
import erqests
ModuleNotFoundError: No module named ‘erqests’
AlexP
(Alex P.)
01.Апрель.2020 14:14:42
#10
Еще например 2 одинаковых ключа не может быть в dict ({ ... }
), видимо там надо что-то другое вместо повтора class
. И эти имена классов выглядят сгенерированными, возможно они периодически меняются, лучше подумать как сделать другой селектор.
Вообще для курса валют наверняка полно API, не надо парсить HTML для такого.
VLad1slav:
erqests
видимо requests
И используйте кнопку Код при выкладывании кода. FAQ по функциональности форума, отличия от классических форумных движков
VLad1slav
(владислав)
01.Апрель.2020 14:16:05
#11
благодарю, обязательно учту
Sciv
(Dmitry)
01.Апрель.2020 14:19:03
#12
Перевожу: requests
Такие ошибки в первую очередь проверяйте на опечатки.
UPD. Не увидел, что уже ответили
VLad1slav
(владислав)
01.Апрель.2020 14:23:04
#13
Вывело то, что нет модуля BeautifulSoup
переписал import Beautifuls на From bs4 import BeautifulSoup (так было источнике от куда я брал эту часть кода)
теперь выводит ошибку: нет модуля с именем bs4
скажите, что исправить?
Sciv
(Dmitry)
01.Апрель.2020 14:24:59
#14
Не силён в питоне, но яндекс мне вот тут подсказывает import beautifulsoup
А про Beautifuls ничего не подсказывает
Может быть, ошибки в исходнике?
VLad1slav
(владислав)
01.Апрель.2020 14:25:57
#15
Sciv:
import beautifulsoup
извиняюсь это я печатался в вопросе) там как раз токи import beautifulsoup
Sciv
(Dmitry)
01.Апрель.2020 14:29:14
#16
Тогда питон просто не знает путь к собственным библиотекам. Я такую фигню получал, когда одновременно поставил 2.7 и 3.
Можно сделать такой финт ушами (пример нагло выкраден из нета). Учтите, что в примере - Linux
import sys
sys.path[0:0] = ['/usr/home/myName/.local/lib/python2.7/site-packages/']
from bs4 import BeautifulSoup
VLad1slav
(владислав)
01.Апрель.2020 14:35:15
#17
я сделал этот финт ушами (великолепная фраза)
но все еще выдает ту же ошибку
Traceback (most recent call last):
File “D:\слава ситису\Курс.py”, line 15, in
from bs4 import beautifulsoup
ModuleNotFoundError: No module named ‘bs4’
AlexP
(Alex P.)
01.Апрель.2020 14:36:40
#18
А как и куда вы библиотеки ставите?
Обычно используют pip + venv (или обертки типа poetry, pipenv) и получается, что всё в самом проекте независимо от системы и других проектов.
Тут пример с poetry: Пример создания GUI приложения на Python. PySide2, Poetry, PyCharm
Sciv
(Dmitry)
01.Апрель.2020 14:37:58
#19
VLad1slav:
No module named ‘bs4’
Согласен с Alex P - а библиотеки вообще установлены?
VLad1slav
(владислав)
01.Апрель.2020 14:38:54
#20
да, библиотеки установлены