commit 1da8320477d8f78e70ca3fe568bcc18efcb41df4 Author: erius Date: Wed Oct 30 23:48:18 2024 +0300 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..18bfee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.venv + diff --git a/bot.py b/bot.py new file mode 100644 index 0000000..4acf154 --- /dev/null +++ b/bot.py @@ -0,0 +1,51 @@ +import logging, requests, json +from telegram import Update, ReplyKeyboardMarkup +from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler, MessageHandler, filters + +logging.basicConfig( + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + level=logging.INFO +) + +logger = logging.getLogger(__name__) +bot_token = '7636065770:AAF8UV5Vb2F7aRuO8EYTyv0xGBmd3dQeonQ' +ya_token = 'y0_AgAAAABiFlEmAAbJ0QAAAAEWkS6NAABACUMU8JdJWoZeypr0qWs05ayGjQ' +ya_url = 'https://partner2.yandex.ru/api/statistics2/get.json' +msg_to_period = { + "Сегодня": "today", + "Вчера": "yesterday", + "Месяц": "30days" +} + + +async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: + reply_keyboard = [[ "Сегодня", "Вчера", "Месяц" ]] + await update.message.reply_text("Какую стату вывести", reply_markup=ReplyKeyboardMarkup(reply_keyboard)) + +async def ya_api(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None: + reply = await fetch_data(update.message.text) + await update.message.reply_text(reply) + +async def fetch_data(msg_period: str) -> str: + response = requests.get(ya_url, headers={'Authorization': ya_token}, params={ + 'lang': 'ru', + 'period': msg_to_period[msg_period], + 'field': ['shows', 'hits_render', 'partner_wo_nds', 'cpmv_partner_wo_nds'] + }) + json_data = json.loads(response.text) + logger.info(json_data) + data = json_data['data']['totals']['2'][0] + return f"Данные за {msg_period}\n\n\ + Подборы рекламы: {data['hits_render']}\n\ + Видимые показы: {data['shows']}\n\ + Вознаграждение партнеру за рекламу: {data['partner_wo_nds']} руб.\n\ + Стоимость 1к видимых показов: {data['cpmv_partner_wo_nds']} руб." + + +if __name__ == '__main__': + application = ApplicationBuilder().token(bot_token).build() + + application.add_handler(CommandHandler('start', start)) + application.add_handler(MessageHandler(filters.Regex("^(Сегодня|Вчера|Месяц)$"), ya_api)) + + application.run_polling()