Почему я не могу вывести нужную мне информацию с помощью 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)