# %% # ZED Python REPL import asyncio import os import re from datetime import datetime import requests import telegram from dotenv import load_dotenv from sqlalchemy import desc, update from sqlalchemy.exc import IntegrityError from models import Notifikasi, Session # Request ke kauaku load_dotenv() GTS_API = os.getenv("GTS_API") GTS_TOKEN = os.getenv("GTS_TOKEN") TELE_BOT = os.getenv("TELE_BOT") TELE_CHATID = os.getenv("TELE_CHATID") headers = {"Authorization": f"Bearer {GTS_TOKEN}"} session = Session() bot = telegram.Bot(token=f"{TELE_BOT}") async def getNotif(): req = requests.get(f"{GTS_API}?limit=5", headers=headers) if req.status_code == 200: data = req.json() try: for notif in data: type = notif["type"] inreply = None status_content = None url = None if "status" in notif: inreply = notif["status"]["in_reply_to_id"] status_content = notif["status"]["content"] url = notif["status"]["url"] postid = notif["id"] created = datetime.strptime( notif["created_at"], "%Y-%m-%dT%H:%M:%S.%fZ" ) handler = notif["account"]["acct"] username = notif["account"]["display_name"] kirim = "Belum" if type == "follow": insert_follow = Notifikasi( post_id=postid, created_at=created, handler=handler, display_name=username, type=type, remark=kirim, ) session.add(insert_follow) else: insert_mentions = Notifikasi( inreplyto=inreply, post_id=postid, created_at=created, handler=handler, display_name=username, type=type, status=status_content, url=url, remark=kirim, ) session.add(insert_mentions) session.commit() except IntegrityError as err: session.rollback() if "post_id" in str(err.orig): print("Post Id sudah ada") else: print("Integritas data bermasalah", str(err)) finally: session.close() async def kirim_ke_tele(): cek_data = ( session.query(Notifikasi) .filter(Notifikasi.remark.like("%elu%")) .order_by(desc(Notifikasi.id)) .limit(10) .all() ) for notif in cek_data: def icon_(type_): if type_ == "mention": return "š¬ mention your note" elif type_ == "reblog": return "š boost your note" elif type_ == "favourite": return "š falling in love with your note" elif type_ == "follow": return "ā started to follow you" else: return None flag = icon_(notif.type) if str(notif.type) == "follow": try: await bot.send_message( parse_mode="html", chat_id=str(TELE_CHATID), text=f""" {notif.display_name}\n{notif.handler}\n{flag} """, ) except Exception as e: print("Follow: Ada masalah saat kirim ke Telebot", e) else: raw = str(notif.status) raw = raw.replace("
", "", 1) raw = raw.rsplit("
", 1)[0] rubah_p = re.sub(r"", "\n\n", raw) rubah_br = re.sub(r"