Update telethon and add support for darts. Fixes #457

This commit is contained in:
Tulir Asokan
2020-04-25 18:24:39 +03:00
parent 8578a9bd01
commit 37ecd57a9b
3 changed files with 23 additions and 13 deletions
+11 -5
View File
@@ -21,7 +21,7 @@ import re
from telethon.errors import (InviteHashInvalidError, InviteHashExpiredError, OptionsTooMuchError, from telethon.errors import (InviteHashInvalidError, InviteHashExpiredError, OptionsTooMuchError,
UserAlreadyParticipantError, ChatIdInvalidError, UserAlreadyParticipantError, ChatIdInvalidError,
TakeoutInitDelayError) TakeoutInitDelayError, EmoticonInvalidError)
from telethon.tl.patched import Message from telethon.tl.patched import Message
from telethon.tl.types import (User as TLUser, TypeUpdates, MessageMediaGame, MessageMediaPoll, from telethon.tl.types import (User as TLUser, TypeUpdates, MessageMediaGame, MessageMediaPoll,
TypeInputPeer, InputMediaDice) TypeInputPeer, InputMediaDice)
@@ -308,13 +308,19 @@ async def vote(evt: CommandEvent) -> EventID:
return await evt.mark_read() return await evt.mark_read()
@command_handler(help_section=SECTION_MISC, @command_handler(help_section=SECTION_MISC, help_args="<_emoji_>",
help_text="Roll a dice on the Telegram servers.") help_text="Roll a dice (\U0001F3B2) or throw a dart (\U0001F3AF) "
async def roll(evt: CommandEvent) -> EventID: "on the Telegram servers.")
async def random(evt: CommandEvent) -> EventID:
if not evt.is_portal: if not evt.is_portal:
return await evt.reply("You can only roll dice in portal rooms") return await evt.reply("You can only roll dice in portal rooms")
portal = po.Portal.get_by_mxid(evt.room_id) 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, @command_handler(help_section=SECTION_PORTAL_MANAGEMENT,
+10 -6
View File
@@ -297,12 +297,16 @@ class PortalTelegram(BasePortal, ABC):
async def handle_telegram_dice(self, source: 'AbstractUser', intent: IntentAPI, evt: Message, async def handle_telegram_dice(self, source: 'AbstractUser', intent: IntentAPI, evt: Message,
relates_to: RelatesTo) -> EventID: relates_to: RelatesTo) -> EventID:
content = TextMessageEventContent( emoji_text = {
msgtype=MessageType.TEXT, format=Format.HTML, "\U0001F3AF": " Dart throw",
body=f"Dice roll result: {evt.media.value}", "\U0001F3B2": " Dice roll",
formatted_body=f'<h4>Dice roll result: {evt.media.value}</h4>', }
relates_to=relates_to, external_url=self._get_external_url(evt)) roll: MessageMediaDice = evt.media
content["net.maunium.telegram.dice"] = evt.media.value 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"<h4>{text}</h4>", 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) await intent.set_typing(self.mxid, is_typing=False)
return await self._send_message(intent, content, timestamp=evt.date) return await self._send_message(intent, content, timestamp=evt.date)
+2 -2
View File
@@ -4,6 +4,6 @@ ruamel.yaml>=0.15.35,<0.17
python-magic>=0.4,<0.5 python-magic>=0.4,<0.5
commonmark>=0.8,<0.10 commonmark>=0.8,<0.10
aiohttp>=3,<4 aiohttp>=3,<4
mautrix==0.5.0.beta10 mautrix==0.5.0.beta13
telethon>=1.12,<1.13 telethon>=1.13,<1.14
telethon-session-sqlalchemy>=0.2.14,<0.3 telethon-session-sqlalchemy>=0.2.14,<0.3