Почему я не могу вывести нужную мне информацию с помощью send_message?

from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton
from bs4 import BeautifulSoup
import requests


class Info:
    def __init__(self):
        #я не хочу показывать токен
        self.bot = Bot(token='#')
        self.dp = Dispatcher(self.bot)
        self.URL = 
            'https://docs.google.com/spreadsheets/d/e/2PACX-1vTl4XRsk2pxPAAumyB'/
            '-0l2au3dkO7jC1PDeaTvctjBBU9HOpXyYwapoE_1PNlZsjrFDKFrpj-HK3oDK/pubhtml# '
        self.HEADERS = {
            'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 '
                          'Safari/537.36 '
        }

    # Тут я получаю расписание
    def _get_data(self):
        response = requests.get(self.URL, headers=self.HEADERS)
        soup = BeautifulSoup(response.content, 'html.parser')
        items_1 = soup.find_all('td', class_='s7')
        items_2 = soup.find_all('td', class_='s8')
        items_3 = soup.find_all('td', class_='s16')
        first_lesson = items_1[69].get_text(strip=True)
        second_lesson = items_1[71].get_text(strip=True)
        third_lesson = items_2[92].get_text(strip=True)
        fourth_lesson = items_2[94].get_text(strip=True)
        fifth_lesson = items_1[73].get_text(strip=True)
        sixth_lesson = items_3[4].get_text(strip=True)
        return first_lesson, second_lesson, third_lesson, fourth_lesson, fifth_lesson, sixth_lesson


    # Тут я должен был вывести расписание, но что-то пошло не так. Собщение не отправляется.
    async def _monday(self, message: types.Message):
        if message.text == '/Понедельник':
            lessons = self._get_data()
            await self.bot.send_message(
                message.chat.id,
                f'{lessons[0]}\n{lessons[1]}\n{lessons[2]}\n{lessons[3]}\n{lessons[4]}\n{lessons[5]}'
            )

    def run(self):
        self.dp.register_message_handler(self._monday)


if __name__ == '__main__':
    bot = Info()
    bot.run()
    executor.start_polling(bot.dp, skip_updates=True)

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

Автор решения: oleksandrigo

Если не секрет, а чем вам не нравиться традиционный метод создания бота на айограме? К чему этот непонятный класс? Все делается гораздо проще и понятней.

from aiogram import Bot, Dispatcher, executor, types
from aiogram.contrib.fsm_storage.memory import MemoryStorage

from bs4 import BeautifulSoup
import requests

from data import config

bot = Bot(token=config.BOT_TOKEN)
storage = MemoryStorage()
dp = Dispatcher(bot, storage=storage)


def get_data():
    url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vTl4XRsk2pxPAAumyB' \
          '-0l2au3dkO7jC1PDeaTvctjBBU9HOpXyYwapoE_1PNlZsjrFDKFrpj-HK3oDK/pubhtml# '
    headers = {
        'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 '
                      'Safari/537.36 '
    }

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    items_1 = soup.find_all('td', class_='s7')
    items_2 = soup.find_all('td', class_='s8')
    items_3 = soup.find_all('td', class_='s16')
    first_lesson = items_1[69].get_text(strip=True)
    second_lesson = items_1[71].get_text(strip=True)
    third_lesson = items_2[92].get_text(strip=True)
    fourth_lesson = items_2[94].get_text(strip=True)
    fifth_lesson = items_1[73].get_text(strip=True)
    sixth_lesson = items_3[4].get_text(strip=True)
    return first_lesson, second_lesson, third_lesson, fourth_lesson, fifth_lesson, sixth_lesson


@dp.message_handler(commands="Понедельник")
async def _monday(message: types.Message):
    lessons = get_data()
    await bot.send_message(
        message.chat.id,
        f'{lessons[0]}\n{lessons[1]}\n{lessons[2]}\n{lessons[3]}\n{lessons[4]}\n{lessons[5]}'
    )


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

→ Ссылка