#discord.py
Вопрос:
так что эта команда работает, и все, кроме…
@commands.command()
async def se(self, ctx, emoji: discord.Emoji):
await ctx.send(f"**Name:**Illdo this later **Link:**{emoji.url}")
это работает только для смайликов с сервера, на котором находится бот.
кто-нибудь знает, как сделать так, чтобы он мог получить ссылку на любые смайлики серверов? даже если бота в нем нет
, и если вы хотите, мне также нужна помощь с отображением имени смайлика
то, к чему я стремлюсь, — это
Комментарии:
1. И как вы хотите, чтобы показывались смайлики, выполняет ли кто-нибудь команду, чтобы сохранить их, или вы хотите сохранить все пользовательские смайлики гильдии?
2. Разве это все равно не было бы невозможно? Бот должен находиться на одном сервере, чтобы вообще получить эмодзи, так что это было бы невозможно . Изображение предоставлено другим ботом, или вы сами создали это изображение?
3. Нет, мы можем напрямую использовать идентификатор emoji, чтобы получить изображение с cdn
Ответ №1:
Вам нужно получить идентификатор смайлика и сделать сам URL-адрес
Вы можете получить его id
от некоторых split()
, а также вам нужно проверить, анимирован ли он, чтобы мы могли использовать .gif
и .png
соответственно
Ниже приведен код:
@commands.command()
async def se(self, ctx, *, msg):
_id = msg.split(":") # split by ":"
if "<a" == _id[0]: # animated emojis structure <a:name:id>
ext = "gif"
else:
ext = "png" # normal emojis structure <name:id>
e_id = _id[2].split(">")[0].strip()# get the id
# url for a emoji is like this, try yourself if you want to check by manually copying any emoji's url
url = f"https://cdn.discordapp.com/emojis/{e_id}.{ext}"
await ctx.send(f"**Name**: :{_id[1]}: **Link**: {url}")