Skip to content

Commit 1d34f87

Browse files
committed
Translate video conferences to links and send unknown command numeric
1 parent 1b0bce0 commit 1d34f87

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

miniirc_matrix.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import miniirc, requests, traceback # type: ignore
1313

1414

15-
ver = (0, 0, 3)
15+
ver = (0, 0, 4)
1616
__version__ = '.'.join(map(str, ver))
1717

1818

@@ -460,16 +460,7 @@ def disconnect(self) -> None:
460460

461461
def _main(self) -> None:
462462
try:
463-
if miniirc.ver >= (2, 0, 0):
464-
self.handle_msg(miniirc.IRCMessage('001', ('', '', ''), {}, [
465-
self.current_nick,
466-
f'Welcome to Matrix {self.current_nick}'
467-
]))
468-
else:
469-
self._handle('001', ('001', '001', '001'), {}, [
470-
self.current_nick,
471-
f':Welcome to Matrix {self.current_nick}'
472-
])
463+
self.__numeric('001', f'Welcome to Matrix {self.current_nick}')
473464

474465
next_batch: Optional[str] = None
475466
while self.connected:
@@ -578,6 +569,9 @@ def send(self, cmd: str, *args: str, force: Optional[bool] = None,
578569
self.debug(self.__post(f'join/{_url_quote(args[0])}'))
579570
elif cmd == 'PART' and len(args) == 1:
580571
self.debug(self.__post(f'{self._get_room_url(args[0])}/leave'))
572+
elif self.connected:
573+
self.debug('Unknown command:', cmd)
574+
self.__numeric('421', cmd, 'Unknown command')
581575

582576
def __send_tagmsg(self, channel: str, tags: dict[Any, Any]) -> None:
583577
if tags.get('+draft/react') and tags.get('+draft/reply'):
@@ -604,6 +598,11 @@ def __irc_msg(self, event: _Event, command: str, args: list[str],
604598
self.handle_msg(miniirc.IRCMessage(
605599
command, (sender, sender, sender), tags, args
606600
))
601+
602+
def __numeric(self, numeric: str, *args: str) -> None:
603+
self.handle_msg(miniirc.IRCMessage(
604+
numeric, ('', '', ''), {}, [self.current_nick, *args]
605+
))
607606
else:
608607
def __irc_msg(self, event: _Event, command: str, args: list[str],
609608
tags: Optional[dict[str, str]] = None, *,
@@ -618,6 +617,11 @@ def __irc_msg(self, event: _Event, command: str, args: list[str],
618617

619618
self._handle(command, (sender, sender, sender), tags, args)
620619

620+
def __numeric(self, numeric: str, *args: str) -> None:
621+
raw_args = [self.current_nick, *args]
622+
raw_args[-1] = ':' + raw_args[-1]
623+
self._handle(numeric, (numeric, numeric, numeric), {}, raw_args)
624+
621625
@_register_event('m.room.message')
622626
def _message_event(self, room_id: str, event: _Event) -> None:
623627
if ('echo-message' not in self.active_caps and
@@ -693,6 +697,19 @@ def _reaction_event(self, room_id: str, event: _Event) -> None:
693697
'+draft/reply': relates_to.event_id[str]
694698
})
695699

700+
@_register_event('im.vector.modular.widgets')
701+
def _widget_event(self, room_id: str, event: _Event) -> None:
702+
if event.content.type == 'jitsi':
703+
data = event.content.data
704+
msg = (f'\x01ACTION started a video conference: https://'
705+
f'{data.domain[str]}/{data.conferenceId[str]}\x01')
706+
elif event.unsigned.prev_content.type == 'jitsi':
707+
msg = '\x01ACTION ended a video conference\x01'
708+
else:
709+
return
710+
711+
self.__irc_msg(event, 'PRIVMSG', [room_id, msg], {})
712+
696713
# Helpers
697714
@classmethod
698715
def _login(cls, homeserver: str, username: str, password: str) -> str:

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setup(
77
name='miniirc_matrix',
8-
version='0.0.3',
8+
version='0.0.4',
99
py_modules=['miniirc_matrix'],
1010
author='luk3yx',
1111
description='A Matrix wrapper for miniirc.',

0 commit comments

Comments
 (0)