diff --git a/README.md b/README.md index 33c50cf..3e20213 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,11 @@ App ini masih dalam pengembangan dan banyak hal yang belum bisa dilakukan, berik - [x] Mentions - [x] Like/Favourite - [x] Boost/Reblog - - [ ] Follow -- [ ] Tandai data di database jika sudah terkirim -- [ ] Cron + - [x] Follow +- [x] Tandai data di database jika sudah terkirim +- [ ] Delay antar fungsi +- [ ] Cron internal +- [ ] Build ## Install Clone repositori ini dan install di lokal. diff --git a/main.py b/main.py index b3308da..f758d2e 100644 --- a/main.py +++ b/main.py @@ -7,8 +7,9 @@ import logging import asyncio import telegram import re +import json from models import Notifikasi, Session -from sqlalchemy import and_, or_, func +from sqlalchemy import and_, or_, func, update from sqlalchemy.exc import IntegrityError from dotenv import load_dotenv from datetime import datetime @@ -31,23 +32,28 @@ async def getNotif(): if req.status_code == 200: data = req.json() + print(data.__class__) try: for notif in data: type = notif['type'] - inreply = notif['status']['in_reply_to_id'] + 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'] - status = notif['status']['content'] - url = notif['status']['url'] 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(post_id=postid, created_at=created, handler=handler, display_name=username, type=type, status=status,url=url, remark=kirim) + insert_mentions = Notifikasi(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() @@ -84,11 +90,11 @@ async def kirim_ke_tele(): 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} + {notif.display_name}\n{notif.handler}\n{flag}\n from python """ ) - except: - print('Ada masalah saat kirim ke Telebot') + except Exception as e: + print(f'Follow: Ada masalah saat kirim ke Telebot', e) else: html_strip = re.compile('<.*?>') status = str(notif.status) @@ -96,13 +102,35 @@ async def kirim_ke_tele(): try: await bot.send_message(parse_mode='html',chat_id=str(TELE_CHATID), text=f""" - {notif.display_name}\n{notif.handler}\n{flag}\n\n{status_text}\n\n{notif.url} + {notif.display_name}\n{notif.handler}\n{flag}\n\n{status_text}\nfrom python\n{notif.url} """ ) except Exception as e: - print(f'Ada masalah saat kirim ke Telebot1', e) + print(f'Mentions: Ada masalah saat kirim ke Telebot', e) + session.close() +async def tandai_notif(): + try: + cek_data = session.query(Notifikasi).filter(Notifikasi.remark == 'Belum').all() + session.execute( + update(Notifikasi). + where(Notifikasi.remark == 'Belum'). + values(remark='Sudah') + ) + session.commit() + except Exception as e: + print(f'Ada masalah saat update remark', e) + finally: + session.close() +async def jalan(): + await asyncio.sleep(2) + await getNotif() + await asyncio.sleep(5) + await kirim_ke_tele() + await asyncio.sleep(5) + await tandai_notif() -# asyncio.run(getNotif()) -asyncio.run(kirim_ke_tele()) +# +if __name__ == "__main__": + asyncio.run(jalan())