Можно сделать такого телеграм бота?
Можно ли сделать бота, который делает скриншоты и скидывать в группу Телеграм? Нужен бот, который будет автоматически заходить на определённый сайт, делать фотографию, скидывать фото и текст и сразу же после этого в группе создавать опрос.
К примеру: появляется фотография, а под ней текст, а после создаётся опрос с нужными ответами на вопрос. Через 90 секунд опрос заканчивается и появляются итоги опроса.
Так же фотография только уже актуальная и текст (к примеру: люди проголосовали что цена пойдет вверх через 5 мин) и после этого, если цена пошла в вверх, бот скидывает актуальное фото, где видно, что цена пошла вверх, и скидывает итоги (на сколько пунктов цена ушла вверх или вниз), и пишет определенный текст. Если цена не пошла в ту сторону, куда проголосовали, бот скидывает так же фото и текст-перекрытие 2 мин в ту сторону, куда проголосовали.
И что бы так было 24/7
Если вы знаете как это сделать, можете сказать где взять источники для этой работы. Ищу уже несколько дней, не могу найти
Ответы (2 шт):
Выбираешь язык - Python
/Node.js
-> для того, чтобы бот мог делать скриншоты используешь библиотеки Selenium
(для питона) или Puppeteer
(для Node.js
) -> отправляешь через Telegram Bot API
сообщения и фотографии -> вроде Телеграм поддерживает создание опросов через API, если не ошибаюсь метод sendpoll
-> а для мониторинга цен можно использовать BeautifulSoup
(питон) или Cheerio
(Node.js
) -> ну а после уже прописываешь логику, которая обрабатывает результаты опроса через n-ое время и, делающая скришоты+отправляющая их в зависимости результатов опроса
Мой старый код, переделай под себя, ничего сложно не вижу:
import pytest
import asyncio
from seleniumbase import BaseCase
from PIL import Image
from io import BytesIO
from telegram import Bot
class TestLoginOut(BaseCase):
# Помечаем тест меткой "smoke" (быстрый тест, проверяющий основную функциональность)
@pytest.mark.smoke
def test_avh_kz(self):
# Получаем существующий цикл событий (event loop) для работы с асинхронными функциями
loop = asyncio.get_event_loop()
# Запускаем асинхронную функцию для выполнения теста
loop.run_until_complete(self.test_avh_kz_async())
# Асинхронная версия теста для работы с веб-сайтом
async def test_avh_kz_async(self):
try:
# Открываем веб-страницу
self.open("http://.......")
# Пытаемся кликнуть на элемент с классом 'articles1'
self.click('li.articles1')
except:
# В случае ошибки делаем скриншот и отправляем уведомление в Telegram
screenshot = await self.take_screenshot() # Получаем скриншот страницы
await self.send_telegram_notification(
token="324", # Токен бота Telegram
chat_id="34242", # ID чата Telegram
message="Комент", # Сообщение с уведомлением
screenshot=screenshot # Прикрепляем скриншот к уведомлению
)
# Пробрасываем исключение для фиксации в отчете о тестировании
raise
# Асинхронная функция для получения скриншота страницы
async def take_screenshot(self):
# Получаем скриншот в формате PNG
screenshot = self.driver.get_screenshot_as_png()
# Открываем изображение с помощью библиотеки Pillow
return Image.open(BytesIO(screenshot))
# Асинхронная функция для отправки уведомления в Telegram с прикрепленным скриншотом
async def send_telegram_notification(self, token, chat_id, message, screenshot):
bot = Bot(token=token) # Инициализация бота с помощью токена
screenshot_buffer = BytesIO() # Буфер для хранения изображения
screenshot.save(screenshot_buffer, format="PNG") # Сохраняем скриншот в буфер в формате PNG
screenshot_buffer.seek(0) # Ставим указатель буфера в начало для чтения
# Отправляем фотографию с сообщением в указанный чат Telegram
await bot.send_photo(chat_id=chat_id, photo=screenshot_buffer, caption=message)