Обработка ссылки для telegram бота в python

вечер). Нужна помощь в дипломной работе, изначальная задача сделать чат бот для компании, которая занимается жд перевозками и т.п, идея пока просто сделать поиск ближайших билетов с помощью Яндекс Api, но не выходит выгрузить в ответ бота информацию о билетах и не понимаю в чём проблема. Функция обрабатывающая команду по поиску билетов в предпоследняя. Заранее спасибо за любую помощь.

import requests
import telebot
from telebot import types
from bs4 import BeautifulSoup
 
 
TOKEN = 'Токен'
bot = telebot.TeleBot(TOKEN)
YApi = 'Токен API Яндекс.Расписание'
 
 
# Команда /start для приветствия и описания функциональности бота
@bot.message_handler(commands=['start'])
def start(message):
    bot.send_message(message.chat.id, 'Добро пожаловать в нашу компанию!\n'
                                      'Я бот, созданный для упрощения деятельности компании.\n'
                                      'Вот список доступных команд:\n'
                                      '/help - Помощь\n'
                                      '/info - Информация о компании\n'
                                      '/contact - Контактная информация\n'
                                      '/feedback - Отправить отзыв\n'
                                      '/order - Оформить заказ\n'
                                      '/status - Проверить статус заказа')
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    btn1 = types.KeyboardButton(text='/help')
    btn2 = types.KeyboardButton(text='/info')
    btn3 = types.KeyboardButton(text='/contact')
    btn4 = types.KeyboardButton(text='/feedback')
    btn5 = types.KeyboardButton(text='/order')
    btn6 = types.KeyboardButton(text='/status')
    keyboard.add(btn1, btn2, btn3, btn4, btn5, btn6)
    bot.send_message(message.chat.id, 'Добро пожаловать! Выберите одну из доступных опций:', reply_markup=keyboard)
 
# Команда /help для вывода списка доступных команд
@bot.message_handler(commands=['help'])
def help(message):
    bot.send_message(message.chat.id, 'Вы выбрали команду /help. Вам помощь необходима?')
    bot.send_message(message.chat.id, 'Список доступных команд:\n'
                                      '/help - Помощь\n'
                                      '/info - Информация о компании\n'
                                      '/contact - Контактная информация\n'
                                      '/feedback - Отправить отзыв\n'
                                      '/order - Оформить заказ\n'
                                      '/status - Проверить статус заказа')
 
# Команда /info для вывода информации о компании
@bot.message_handler(commands=['info'])
def info(message):
    bot.send_message(message.chat.id, 'Вы выбрали команду /info. Вот информация о нашей компании:')
    bot.send_message(message.chat.id, 'Наша компания - Глобал Лоистик, является лидером в области производства и продажи\n'
                                      'товаров высокого качества. Мы предлагаем широкий ассортимент продукции,\n'
                                      'включая электронику, одежду, мебель и многое другое.')
 
# Команда /contact для вывода контактной информации
@bot.message_handler(commands=['contact'])
def contact(message):
    bot.send_message(message.chat.id, 'Вы выбрали команду /contact. Вот контактные данные нашей компании:')
    bot.send_message(message.chat.id, 'Контактная информация:\n'
                                      'Телефон: +1 123-456-7890\n'
                                      'Email: [email][email protected][/email]\n'
                                      'Адрес: 1234 Main St, Springfield, IL 62704, USA')
 
# Команда /feedback для отправки отзыва
@bot.message_handler(commands=['feedback'])
def feedback(message):
    bot.send_message(message.chat.id, 'Вы выбрали команду /feedback.')
    bot.send_message(message.chat.id, 'Вы можете отправить свой отзыв на нашу электронную почту: [email][email protected][/email]')
 
# Команда /order для оформления заказа
@bot.message_handler(commands=['order'])
def order(message):
    bot.send_message(message.chat.id, 'Вы выбрали команду /order.')
    bot.send_message(message.chat.id, 'Для оформления заказа, пожалуйста, свяжитесь с нашим отделом продаж по телефону\n'
                                      '+1 123-456-7890 или отправьте запрос на [email][email protected][/email].')
 
# Команда /status для проверки статуса заказа
@bot.message_handler(commands=['status'])
def status(message):
    bot.send_message(message.chat.id, 'Вы выбраали команду /status.')
    bot.send_message(message.chat.id, 'Для проверки статуса заказа, пожалуйста, укажите номер заказа и отправьте запрос.')
 
@bot.message_handler(commands=['search_tickets'])
def search_tickets(message):
    try:
        # Отправка запроса на ввод города назначения
        bot.send_message(message.chat.id, 'Введите город назначения:')
        bot.register_next_step_handler(message, process_to_city_step)
 
    except Exception as e:
        bot.send_message(message.chat.id, f'Произошла ошибка: {e}')
 
# Обработка ввода города назначения
def process_to_city_step(message):
    try:
        # Получение города назначения от пользователя
        to_city = message.text
 
        # Формирование URL-адреса запроса к API Яндекс.Расписаний для поиска билетов
        url = f'https://rasp.yandex.ru/search/?fromName=Новороссийск&toName={to_city}&apikey={YApi}'
 
        # Отправка запроса на API Яндекс.Расписаний для поиска билетов
        response = requests.get(url)
 
        # Парсинг ответа
        soup = BeautifulSoup(response.content, 'html.parser')
 
        # Извлечение информации о билетах
        tickets_info = []
        segments = soup.find_all('div', class_='SearchTransfer__common')
        for segment in segments:
            departure_station = segment.find('div', class_='STableStation TableTimeAndStations__station').text.strip()
            arrival_station = segment.find('div', class_='TableSearchTransferTimeAndDuration__stationsPath').text.strip()
            train_title = segment.find('span', class_='SearchTransfer__title').text.strip()
            tickets_info.append(f'Билет: {departure_station} - {arrival_station}, Поезд: {train_title}')
 
        # Отправка информации о билетах пользователю
        if tickets_info:
            bot.send_message(message.chat.id, f'Найдены билеты в город {to_city}:\n' + '\n'.join(tickets_info))
        else:
            bot.send_message(message.chat.id, f'Билеты в город {to_city} не найдены')
 
    except Exception as e:
        bot.send_message(message.chat.id, f'Произошла ошибка: {e}')
 
# Обработка текстовых сообщений
@bot.message_handler(func=lambda message: True)
def handle_text(message):
    # В данном примере можно добавить дополнительную логику, например, обработку регистрации и авторизации пользователей
    # на ваше усмотрение
    bot.send_message(message.chat.id, 'Извините, я не могу обработать ваш запрос. Нажмите или напишите /start для начала работы.')
 
# Запуск бота
if __name__ == '__main__':
    bot.polling(none_stop=True)

Ответы (0 шт):