Skip to content

Commit c43a34c

Browse files
committed
Add possibility to get another article by reacting with πŸ‘ or βž•
Release v0.2.3
1 parent 09b79fd commit c43a34c

File tree

3 files changed

+45
-4
lines changed

3 files changed

+45
-4
lines changed

β€ŽCHANGELOG.mdβ€Ž

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# CHANGELOG
22

3+
## v0.2.3 (2022-02-27)
4+
5+
* Add possibility to get another article by reacting with πŸ‘ or βž•.
6+
37
## v0.2.0 (2021-08-08)
48

59
* Initial version with the following features

β€Žmaubot.yamlβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ maubot: 0.1.2
55
id: me.jasonrobinson.pocket
66

77
# A PEP 440 compliant version string.
8-
version: 0.2.0
8+
version: 0.2.3
99

1010
# The SPDX license identifier for the plugin. https://spdx.org/licenses/
1111
# Optional, assumes all rights reserved if omitted.

β€Žpocket/bot.pyβ€Ž

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,45 @@ def do_update(self, helper: ConfigUpdateHelper) -> None:
2121
class 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

Comments
Β (0)