@@ -21,6 +21,45 @@ def do_update(self, helper: ConfigUpdateHelper) -> None:
2121class PocketPlugin (Plugin ):
2222 db : Database
2323
24+ @command .passive (
25+ event_type = EventType .REACTION ,
26+ field = lambda e : e .content .relates_to .key ,
27+ msgtypes = [],
28+ regex = r"\U00002795|\U0001F44D" ,
29+ )
30+ async def another (self , event : ReactionEvent , _ : Tuple [str ]) -> None :
31+ item_event = self .db .get_user_event (event .sender , event .content .relates_to .event_id )
32+ if not item_event :
33+ return
34+
35+ user = self .db .get_user_by_id (event .sender )
36+ if not user or not user .access_token :
37+ await self .client .react (
38+ event .room_id ,
39+ event .content .relates_to .event_id ,
40+ "β" ,
41+ )
42+ return
43+
44+ article = await self .get_random_article (user )
45+ if not article :
46+ await self .client .react (
47+ event .room_id ,
48+ event .content .relates_to .event_id ,
49+ "π€·" ,
50+ )
51+ return
52+ event_id = await self .client .send_markdown (
53+ room_id = event .room_id ,
54+ markdown = self .format_article_message (article ),
55+ )
56+ self .db .store_user_event (event .sender , event_id , article ["item_id" ])
57+
58+ @staticmethod
59+ def format_article_message (article ):
60+ return f"{ article ['resolved_title' ]} - { article ['resolved_url' ]} " \
61+ f"(β
to archive, [view in Pocket](https://getpocket.com/read/{ article ['item_id' ]} ), π/β for another)"
62+
2463 @command .passive (
2564 event_type = EventType .REACTION ,
2665 field = lambda e : e .content .relates_to .key ,
@@ -137,9 +176,7 @@ async def handler(self, event: MessageEvent) -> None:
137176 if not article :
138177 await event .respond ("Didn't find any saved articles. Is your Pocket empty? Or did we hit an error?" )
139178 return
140- event_id = await event .respond (
141- f"{ article ['resolved_title' ]} - { article ['resolved_url' ]} "
142- f"(react β
to archive, [open in Pocket](https://getpocket.com/read/{ article ['item_id' ]} ))" )
179+ event_id = await event .respond (self .format_article_message (article ))
143180 self .db .store_user_event (event .sender , event_id , article ["item_id" ])
144181
145182 @handler .subcommand (help = "Authenticate with Pocket" )
0 commit comments