patch 3ddecf1fe8d1534ab6af10d2b3602245541d4234 Author: E. Bosch Date: Mon May 8 01:04:52 CEST 2023 * service: Add "mark_read" command to mark chats as read and reset mentions diff -rN -u old-irgramd/service.py new-irgramd/service.py --- old-irgramd/service.py 2024-10-23 05:18:08.330765150 +0200 +++ new-irgramd/service.py 2024-10-23 05:18:08.334765143 +0200 @@ -17,6 +17,7 @@ 'dialog': (self.handle_command_dialog, 1, 2), 'help': (self.handle_command_help, 0, 1), 'history': (self.handle_command_history, 1, 3), + 'mark_read': (self.handle_command_mark_read, 1, 1), } self.ask_code = settings['ask_code'] self.tg = telegram @@ -148,15 +149,6 @@ async def handle_command_history(self, peer=None, limit='10', add_unread=None, help=None): if not help: - def get_peer_id(tgt): - if tgt in self.irc.users or tgt in self.irc.irc_channels: - peer_id = self.tg.get_tid(tgt) - reply = None - else: - peer_id = None - reply = ('Unknown user or channel',) - return peer_id, reply - async def get_unread(tgt): async for dialog in self.tg.telegram_client.iter_dialogs(): id, type = tgutils.resolve_id(dialog.id) @@ -181,7 +173,7 @@ return n, err tgt = peer.lower() - peer_id, reply = get_peer_id(tgt) + peer_id, reply = self.get_peer_id(tgt) if reply: return reply if limit == 'unread': @@ -222,6 +214,33 @@ ) return reply + async def handle_command_mark_read(self, peer=None, help=None): + if not help: + peer_id, reply = self.get_peer_id(peer.lower()) + if reply: return reply + + await self.tg.telegram_client.send_read_acknowledge(peer_id, clear_mentions=True) + reply = ('',) + else: # HELP.brief or HELP.desc (first line) + reply = (' mark_read Mark messages as read',) + if help == HELP.desc: # rest of HELP.desc + reply += \ + ( + ' mark_read ', + 'Mark all messages on (channel or user) as read, this also will', + 'reset the number of mentions to you on .' + ) + return reply + + def get_peer_id(self, tgt): + if tgt in self.irc.users or tgt in self.irc.irc_channels: + peer_id = self.tg.get_tid(tgt) + reply = None + else: + peer_id = None + reply = ('Unknown user or channel',) + return peer_id, reply + class HELP: desc = 1 brief = 2