Last active
October 3, 2021 14:14
-
-
Save dnkls/5c638efaa519c8ff58841f91a17371cb to your computer and use it in GitHub Desktop.
tgBot
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import asyncio | |
import datetime | |
import json | |
from aiogram import Bot, Dispatcher, executor, types | |
from aiogram.utils.markdown import hbold, hunderline, hcode, hlink | |
# from aiogram.methods.send_photo import SendPhoto | |
from aiogram.dispatcher.filters import Text | |
from config import token, user_id | |
from main import check_news_update | |
bot = Bot(token=token, parse_mode=types.ParseMode.HTML) | |
dp = Dispatcher(bot) | |
@dp.message_handler(commands="start") | |
async def start(message: types.Message): | |
start_buttons = ["Все новости", "Последние 5 новостей", "Свежие новости"] | |
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True) | |
keyboard.add(*start_buttons) | |
await message.answer("Лента новостей", reply_markup=keyboard) | |
@dp.message_handler(Text(equals="Все новости")) | |
async def get_all_news(message: types.Message): | |
with open("news_dict.json") as file: | |
news_dict = json.load(file) | |
for k, v in sorted(news_dict.items()): | |
# news = f"<b>{datetime.datetime.fromtimestamp(v['article_date_timestamp'])}</b>\n" \ | |
# f"<u>{v['article_title']}</u>\n" \ | |
# f"<code>{v['article_desc']}</code>\n" \ | |
# f"{v['article_url']}" | |
# news = f"{hbold(datetime.datetime.fromtimestamp(v['article_date_timestamp']))}\n" \ | |
# f"{hunderline(v['article_title'])}\n" \ | |
# f"{hcode(v['article_desc'])}\n" \ | |
# f"{hlink(v['article_title'], v['article_url'])}" | |
news = f"{hlink(v['article_title'], v['article_url'])} | {v['new_image']} " | |
await message.answer(news) | |
@dp.message_handler(Text(equals="Последние 5 новостей")) | |
async def get_last_five_news(message: types.Message): | |
with open("news_dict.json") as file: | |
news_dict = json.load(file) | |
for k, v in sorted(news_dict.items())[-5:]: | |
news = f"{hlink(v['article_title'], v['article_url'])} | {v['new_image']}" | |
await message.answer(news) | |
@dp.message_handler(Text(equals="Свежие новости")) | |
async def get_fresh_news(message: types.Message): | |
fresh_news = check_news_update() | |
if len(fresh_news) >= 1: | |
for k, v in sorted(fresh_news.items()): | |
news = f"{hlink(v['article_title'], v['article_url'])} | {v['new_image']}" | |
await message.answer(news) | |
else: | |
await message.answer("Пока нет свежих новостей...") | |
async def news_every_minute(): | |
while True: | |
fresh_news = check_news_update() | |
if len(fresh_news) >= 1: | |
for k, v in sorted(fresh_news.items()): | |
news = f"{hlink(v['article_title'], v['article_url'])} | {v['new_image']}" | |
# get your id @userinfobot | |
await bot.send_message(user_id, news, disable_notification=True) | |
else: | |
await bot.send_message(user_id, "Пока нет свежих новостей...", disable_notification=True) | |
await asyncio.sleep(20) | |
if __name__ == '__main__': | |
loop = asyncio.get_event_loop() | |
loop.create_task(news_every_minute()) | |
executor.start_polling(dp) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment