36 lines
1.1 KiB
Python
36 lines
1.1 KiB
Python
import re
|
|
from endcord.app import Endcord
|
|
|
|
EXT_NAME = "endcord_aemoji"
|
|
EXT_VERSION = "0.1.0"
|
|
EXT_ENDCORD_VERSION = "1.4.2"
|
|
EXT_DESCRIPTION = "View animated custom emoji as GIFs"
|
|
EXT_COMMAND_ASSIST = ("view_aemoji - View animated emoji", "view_aemoji")
|
|
|
|
EMOJI_RE = re.compile("^<:(.+):(\d+)>$")
|
|
|
|
|
|
def get_emoji_url(emoji: str) -> str | None:
|
|
m = EMOJI_RE.fullmatch(emoji)
|
|
if m is None:
|
|
return None
|
|
emoji_id = m.group(2)
|
|
return f"https://cdn.discordapp.com/emojis/{emoji}.gif"
|
|
|
|
|
|
class Extension:
|
|
def __init__(self, app):
|
|
self.app: Endcord = app
|
|
|
|
def on_execute_command(self, command_text: str, chat_sel: int, tree_sel: int):
|
|
if command_text.startswith("view_aemoji"):
|
|
try:
|
|
emoji = command_text.split(" ")[1]
|
|
except IndexError:
|
|
self.app.update_extra_line("Emoji argument not given")
|
|
return
|
|
emoji_url = get_emoji_url(emoji)
|
|
if emoji_url is None:
|
|
self.app.update_extra_line("Invalid emoji")
|
|
return
|
|
self.app.download_file(emoji_url, open_media=True)
|