@L1kr1k

Как заставить телеграм бота выводить нужное сообщение?

Есть бот на библиотеке telebot, который парсит новости с сайта с помощью bs4. Моя задумка в том, чтобы записывать url новостей, которые бот спарсил, в отдельный текстовый документ, это я сделал. Но в случае их наличия в документе он должен не выводить их, а выводить только новости, которых ещё не было. В случае же полного отсутствия новых постов бот должен вывести сообщение о том, что новостей нет. Целый день голову ломаю, ничего не могу придумать. Вот так сейчас выглядит отрывок кода (простите, если что не так запостил, я первый раз на этом форуме):

elif message.text=='Помощник, есть новости?':
			bot.send_message(message.chat.id, 'Вот последние новости.')
			news_url='(сайт)'
			news_headers={'User-Agent': '(агент пользователя)'}
			news_response=requests.get(news_url, headers=news_headers)
			result_news=BeautifulSoup(news_response.content, 'html.parser')
			items_news=result_news.findAll('div', class_='list-item')
			comps_news=[]
			for item in items_news:
				comps_news.append({'news_title': item.find('a', class_='list-item__title color-font-hover-only').get_text(strip=True), 'news_link': item.find('a', class_='list-item__title color-font-hover-only').get('href')})
				news_link=item.find('a', class_='list-item__title color-font-hover-only').get('href')
				news_file=open('(путь к текстовому файлу)', 'r')
				news_note=set()
				for line in news_file:
					news_note.add(line.strip())
				news_file.close()
				if not str(news_link) in news_note:
					news_file=open('(путь к текстовому файлу)', 'a')
					news_file.write(str(news_link)+'\n')
					news_note.add(news_link)
			for comp in comps_news:
				bot.send_message(message.chat.id, comp['news_title']+'\n'+comp['news_link'])
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы