Improve formatting of dice messages
This commit is contained in:
@@ -332,16 +332,63 @@ class PortalTelegram(BasePortal, ABC):
|
|||||||
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)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _format_dice(roll: MessageMediaDice) -> str:
|
||||||
|
if roll.emoticon == "\U0001F3B0":
|
||||||
|
emojis = {
|
||||||
|
0: "\U0001F36B", # "🍫",
|
||||||
|
1: "\U0001F352", # "🍒",
|
||||||
|
2: "\U0001F34B", # "🍋",
|
||||||
|
3: "7\ufe0f\u20e3" # "7️⃣",
|
||||||
|
}
|
||||||
|
res = roll.value - 1
|
||||||
|
slot1, slot2, slot3 = emojis[res % 4], emojis[res // 4 % 4], emojis[res // 16]
|
||||||
|
return f"{slot1} {slot2} {slot3} ({roll.value})"
|
||||||
|
elif roll.emoticon == "\u26BD":
|
||||||
|
results = {
|
||||||
|
1: "miss",
|
||||||
|
2: "hit the woodwork",
|
||||||
|
3: "goal", # seems to go in through the center
|
||||||
|
4: "goal",
|
||||||
|
5: "goal 🎉", # seems to go in through the top right corner, includes confetti
|
||||||
|
}
|
||||||
|
elif roll.emoticon == "\U0001F3B3":
|
||||||
|
results = {
|
||||||
|
1: "miss",
|
||||||
|
2: "1 pin down",
|
||||||
|
3: "3 pins down, split",
|
||||||
|
4: "4 pins down, split",
|
||||||
|
5: "5 pins down",
|
||||||
|
6: "strike 🎉",
|
||||||
|
}
|
||||||
|
# elif roll.emoticon == "\U0001F3C0":
|
||||||
|
# results = {
|
||||||
|
# 2: "rolled off",
|
||||||
|
# 3: "stuck",
|
||||||
|
# }
|
||||||
|
# elif roll.emoticon == "\U0001F3AF":
|
||||||
|
# results = {
|
||||||
|
# 1: "bounced off",
|
||||||
|
# 2: "outer rim",
|
||||||
|
#
|
||||||
|
# 6: "bullseye",
|
||||||
|
# }
|
||||||
|
else:
|
||||||
|
return str(roll.value)
|
||||||
|
return f"{results[roll.value]} ({roll.value})"
|
||||||
|
|
||||||
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:
|
||||||
emoji_text = {
|
emoji_text = {
|
||||||
"\U0001F3AF": " Dart throw",
|
"\U0001F3AF": " Dart throw",
|
||||||
"\U0001F3B2": " Dice roll",
|
"\U0001F3B2": " Dice roll",
|
||||||
"\U0001F3C0": " Basketball throw",
|
"\U0001F3C0": " Basketball throw",
|
||||||
|
"\U0001F3B0": " Slot machine",
|
||||||
|
"\U0001F3B3": " Bowling",
|
||||||
"\u26BD": " Football kick"
|
"\u26BD": " Football kick"
|
||||||
}
|
}
|
||||||
roll: MessageMediaDice = evt.media
|
roll: MessageMediaDice = evt.media
|
||||||
text = f"{roll.emoticon}{emoji_text.get(roll.emoticon, '')} result: {roll.value}"
|
text = f"{roll.emoticon}{emoji_text.get(roll.emoticon, '')} result: {self._format_dice(roll)}"
|
||||||
content = TextMessageEventContent(msgtype=MessageType.TEXT, format=Format.HTML, body=text,
|
content = TextMessageEventContent(msgtype=MessageType.TEXT, format=Format.HTML, body=text,
|
||||||
formatted_body=f"<h4>{text}</h4>", relates_to=relates_to,
|
formatted_body=f"<h4>{text}</h4>", relates_to=relates_to,
|
||||||
external_url=self._get_external_url(evt))
|
external_url=self._get_external_url(evt))
|
||||||
|
|||||||
Reference in New Issue
Block a user