Получение информации из Яндекс Метрики в телеграм-боте

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Не всегда удобно открывать браузер или приложение информации из яндекс метрики. Для удобства я реализовал получение основных метрик в телеграм-боте.

C статье вы найдете

  • Ссылку на код проекта.

  • Как развернуть проект на удаленном сервере и подключить к телеграм-боту.

Исходный код бота для работы с Яндекс Метрикой на GitHub.

Стоит отметить, что Метрика позволяет использовать их бота для получения регулярных отчетов. Цель — именно в возможности настроить решение под себя и получать отчеты за произвольное время.

Мы напишем бота в Telegram, который будет отправлять статистику с Яндекс Метрики, включая UTM метки.

Пример работы бота
Пример работы бота
Сводка по UTM-меткам
Сводка по UTM-меткам

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

В завершении статьи мы развернем проект в облаке Amvera, используя git push, буквально за четыре команды в IDE.

Шаг 0. Написание бота

Вы можете скачать уже готовый код и его использовать. Для тех, кому интересно ознакомиться подробнее и что-то изменить в функциональности решения, в подкате описание кода проекта.

Написание бота с использованием библиотеки aiogram 3

Перед тем как приступить к написанию бота, мы установим необходимые библиотеки для работы бота.

Переходим в командную строку (cmd) и прописываем команду ниже.

pip install aiogram requests

Приступим к написанию кода.

  1. Создаём и открываем файл main.py.

  2. Импортируем библиотеки.

import logging
import asyncio
import os
import string
import requests


from datetime import datetime


from aiogram import Bot, Dispatcher, Router, types
from aiogram.types import CallbackQuery, InlineKeyboardMarkup, InlineKeyboardButton
from aiogram.filters import CommandStart
from aiogram.fsm.state import StatesGroup, State
from aiogram.fsm.context import FSMContext

Экземпляр бота выглядит следующим образом:

logging.basicConfig(level=logging.INFO)


BOT_TOKEN = os.environ["TOKEN"]


bot = Bot(token=BOT_TOKEN) # токен, который будет в качестве переменной на хостинге
dp = Dispatcher() # переменная диспетчера
router = Router() # переменная роутера
YANDEX_METRIKA_TOKEN = os.environ["TOKEN_YANDEX"]
COUNTER_ID = os.environ["COUNTER_ID"]


choicestat = None


start_date = datetime.today().replace(day=1).strftime("%Y-%m-%d")
end_date = datetime.today().strftime("%Y-%m-%d")


async def main():
    dp.include_router(router) # инициализация роутера
    await dp.start_polling(bot) # запуск бота


if __name__ == '__main__':
    logging.basicConfig(level=logging.INFO) # инициализация логгера
    try:
        asyncio.run(main()) # запускаем функцию main в асинхронном режиме
    except KeyboardInterrupt:
        print('Бот выключен')

Мы написали основу бота, теперь напишем необходимые команды для его работы:

  1. Напишем переменные и класс FSM для управления состояниями бота при работе с пользователем:

class Form(StatesGroup):
    date1 = State()
    date2 = State()
    date1utm = State()
    date2utm = State()


choicestart = InlineKeyboardMarkup(inline_keyboard=[
    [InlineKeyboardButton(text="						
Источник: https://habr.com/ru/companies/amvera/articles/888638/


Интересные статьи

Интересные статьи

Представьте, что к вам приходит владелец с видео-концептом новой фичи для клиента, функционал которой отдаленно напоминает космический корабль, а у вас всего два месяца на разработку, и один — на тест...
В США приговорили к 120 дням тюремного заключения и штрафу в $146 тыс. бывшего инженера Apple Сяоланя Чжана за кражу коммерческих секретов во время работы над электромобилем Apple Car. В 2022 году он ...
Начнем с небольшого предисловия. Битрикс24 позволяет автоматизировать множество разных процессов внутри компании. В частности в Битрикс есть большой и сильный блок автоматизации процессов работы с кли...
Мне было необходимо делать 2 раза в сутки бэкап сайта на «1С-Битрикс: Управление сайтом» (файлов и базы mysql) и хранить историю изменений за 90 дней. Сайт расположен на VDS под уп...
Всем привет! Меня зовут Илья Агеев, я отвечаю за QA Badoo, Bumble и других наших социальных сетей для знакомств. 15 июня приглашаю на ежегодную встречу тимлидов, руководителей отделов ...