@FromProg

Не выводятся сообщения в боте телеграм?

Код:
import requests
from bs4 import BeautifulSoup
import time
from parse.dataPy import *
from settings.settings import *
import telebot
from telebot import *

my_bot = telebot.TeleBot(TOKEN)

def create_keyboard():
	keyboard = telebot.types.ReplyKeyboardMarkup(True, True)
	return keyboard

@my_bot.message_handler(commands = ['rate'])
def messages(message):
	loop = True

	my_bot.send_message(message.chat.id, 'Выберите, курс какой валюты вы хотите узнать', reply_markup = create_keyboard().row('Bitcoin', 'Ethereum', 'Tether', 'Cardano', 'Binance Coin', 'XRP', 'Dogecoin', 'USD Coin', 'Polkadot', 'Uniswap'))
	if message.text.lower() == 'bitcoin':
		second = my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_bitcoin, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		while loop:
			time.sleep(int(second))
			my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1057391-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'ethereum':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_ethereum, headers = headers)
		html = BeautifulSoup(source.text, 'lxml') 
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1061443-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'tether':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_tether, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1061453-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'cardano':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_cardano, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1062537-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'binance coin':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_binance_coin, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1061448-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'xrp':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_xrp, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1057392-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'dogecoin':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_dogecoin, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1061477-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'usd Coin':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_usd_coin, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1114630-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'polkadot':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_polkadot, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1165465-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))
	elif message.text.lower() == 'uniswap':
		my_bot.send_message(message.chat.id, 'Выберите, каждую какую секунду вы хотите видеть курс валюты?', reply_markup = create_keyboard().row('1', '2', '3', '5', '10'))
		source = requests.get(url_uniswap, headers = headers)
		html = BeautifulSoup(source.text, 'lxml')	
		my_bot.send_message(message.chat.id, html.find('span', {'class': 'pid-1167226-last', 'id': 'last_last'}).get_text(), reply_markup = create_keyboard().row('stop'))

my_bot.polling(none_stop = True, interval = 0)


Я пишу: /rate
Ответ: Выберите, курс какой валюты вы хотите узнать
Я пишу: Bitcoin
Ответа не следует, и ошибок в командной строке нет

Но если сделать с командой(@my_bot.message_handler(commands = ['rate'])), а с текстом(@my_bot.message_handler(content_types = ['text'])), то всё прекрасно работает

Подскажите, в чём ошибка, или я что-то не так делаю?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
danila763
@danila763
Учу python, sql
У вас стоит только обработка команды rate.
в обработке вы отправляете запрос, какую валюту использовать, но не обрабатываете ответ.
Вы должны создать отдельный обработчик, который ловит весь текст

примерно так:
@my_bot.message_handler(text='bitcoin')
Точно не знаю, я с aiogram сейчас разбираюсь а не с telebot
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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