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())