From 37ecd57a9bb9ed90a59cdd320aff4baac9a60c96 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 25 Apr 2020 18:24:39 +0300 Subject: [PATCH] Update telethon and add support for darts. Fixes #457 --- mautrix_telegram/commands/telegram/misc.py | 16 +++++++++++----- mautrix_telegram/portal/telegram.py | 16 ++++++++++------ requirements.txt | 4 ++-- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/mautrix_telegram/commands/telegram/misc.py b/mautrix_telegram/commands/telegram/misc.py index 4bc9d93f..4a51677f 100644 --- a/mautrix_telegram/commands/telegram/misc.py +++ b/mautrix_telegram/commands/telegram/misc.py @@ -21,7 +21,7 @@ import re from telethon.errors import (InviteHashInvalidError, InviteHashExpiredError, OptionsTooMuchError, UserAlreadyParticipantError, ChatIdInvalidError, - TakeoutInitDelayError) + TakeoutInitDelayError, EmoticonInvalidError) from telethon.tl.patched import Message from telethon.tl.types import (User as TLUser, TypeUpdates, MessageMediaGame, MessageMediaPoll, TypeInputPeer, InputMediaDice) @@ -308,13 +308,19 @@ async def vote(evt: CommandEvent) -> EventID: return await evt.mark_read() -@command_handler(help_section=SECTION_MISC, - help_text="Roll a dice on the Telegram servers.") -async def roll(evt: CommandEvent) -> EventID: +@command_handler(help_section=SECTION_MISC, help_args="<_emoji_>", + help_text="Roll a dice (\U0001F3B2) or throw a dart (\U0001F3AF) " + "on the Telegram servers.") +async def random(evt: CommandEvent) -> EventID: if not evt.is_portal: return await evt.reply("You can only roll dice in portal rooms") portal = po.Portal.get_by_mxid(evt.room_id) - await evt.sender.client.send_media(await portal.get_input_entity(evt.sender), InputMediaDice()) + try: + await evt.sender.client.send_media(await portal.get_input_entity(evt.sender), + InputMediaDice(evt.args[0] if len(evt.args) > 0 + else "\U0001F3B2")) + except EmoticonInvalidError: + return await evt.reply("Invalid emoji for randomization") @command_handler(help_section=SECTION_PORTAL_MANAGEMENT, diff --git a/mautrix_telegram/portal/telegram.py b/mautrix_telegram/portal/telegram.py index 5fcff089..b39ccd88 100644 --- a/mautrix_telegram/portal/telegram.py +++ b/mautrix_telegram/portal/telegram.py @@ -297,12 +297,16 @@ class PortalTelegram(BasePortal, ABC): async def handle_telegram_dice(self, source: 'AbstractUser', intent: IntentAPI, evt: Message, relates_to: RelatesTo) -> EventID: - content = TextMessageEventContent( - msgtype=MessageType.TEXT, format=Format.HTML, - body=f"Dice roll result: {evt.media.value}", - formatted_body=f'

Dice roll result: {evt.media.value}

', - relates_to=relates_to, external_url=self._get_external_url(evt)) - content["net.maunium.telegram.dice"] = evt.media.value + emoji_text = { + "\U0001F3AF": " Dart throw", + "\U0001F3B2": " Dice roll", + } + roll: MessageMediaDice = evt.media + text = f"{roll.emoticon}{emoji_text.get(roll.emoticon, '')} result: {roll.value}" + content = TextMessageEventContent(msgtype=MessageType.TEXT, format=Format.HTML, body=text, + formatted_body=f"

{text}

", relates_to=relates_to, + external_url=self._get_external_url(evt)) + content["net.maunium.telegram.dice"] = {"emoticon": roll.emoticon, "value": roll.value} await intent.set_typing(self.mxid, is_typing=False) return await self._send_message(intent, content, timestamp=evt.date) diff --git a/requirements.txt b/requirements.txt index 2cb95d2a..8397ca4d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,6 @@ ruamel.yaml>=0.15.35,<0.17 python-magic>=0.4,<0.5 commonmark>=0.8,<0.10 aiohttp>=3,<4 -mautrix==0.5.0.beta10 -telethon>=1.12,<1.13 +mautrix==0.5.0.beta13 +telethon>=1.13,<1.14 telethon-session-sqlalchemy>=0.2.14,<0.3