maubot-ntfy/ntfy/emoji.py

48 lines
1.4 KiB
Python
Raw Normal View History

from types import SimpleNamespace
from typing import List, Tuple
from mautrix.util.logging import TraceLogger
try:
import emoji
except ImportError:
# basic list of supported emoji, based on https://docs.ntfy.sh/publish/#tags-emojis
emoji_dict = {
"+1": "👍",
"-1": "👎️",
"facepalm": "🤦",
"partying_face": "🥳",
"warning": "⚠️",
"no_entry": "",
"tada": "🎉",
"rotating_light": "🚨",
"no_entry_sign": "🚫",
"heavy_check_mark": "✔️",
"triangular_flag_on_post": "🚩",
"cd": "💿",
"loudspeaker": "📢",
"skull": "💀",
"computer": "💻",
"white_check_mark": "",
}
emoji = SimpleNamespace()
emoji.emojize = lambda e: emoji_dict.get(e[1:-1], e)
emoji.is_emoji = lambda e: e in emoji_dict.values()
WHITE_CHECK_MARK = emoji.emojize(":white_check_mark:")
def parse_tags(log: TraceLogger, tags: List[str]) -> Tuple[List[str], List[str]]:
if emoji is None:
log.warn("Please install the `emoji` package for full emoji support")
emojis = []
non_emoji_tags = []
for tag in tags:
emojized = emoji.emojize(f":{tag}:")
if emoji.is_emoji(emojized):
emojis.append(emojized)
else:
non_emoji_tags.append(tag)
return (emojis, non_emoji_tags)