mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-17 20:13:30 +01:00
@@ -49,6 +49,12 @@ class Emoji {
|
|||||||
*/
|
*/
|
||||||
this.managed = data.managed;
|
this.managed = data.managed;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether this emoji is animated
|
||||||
|
* @type {boolean}
|
||||||
|
*/
|
||||||
|
this.animated = data.animated;
|
||||||
|
|
||||||
this._roles = data.roles;
|
this._roles = data.roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +95,7 @@ class Emoji {
|
|||||||
* @readonly
|
* @readonly
|
||||||
*/
|
*/
|
||||||
get url() {
|
get url() {
|
||||||
return Constants.Endpoints.CDN(this.client.options.http.cdn).Emoji(this.id);
|
return Constants.Endpoints.CDN(this.client.options.http.cdn).Emoji(this.id, this.animated ? 'gif' : 'png');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -187,7 +193,11 @@ class Emoji {
|
|||||||
* msg.reply(`Hello! ${emoji}`);
|
* msg.reply(`Hello! ${emoji}`);
|
||||||
*/
|
*/
|
||||||
toString() {
|
toString() {
|
||||||
return this.requiresColons ? `<:${this.name}:${this.id}>` : this.name;
|
if (!this.id || !this.requiresColons) {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return `<${this.animated ? 'a' : ''}:${this.name}:${this.id}>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ const Endpoints = exports.Endpoints = {
|
|||||||
Member: m => exports.Endpoints.Guild(m.guild).Member(m),
|
Member: m => exports.Endpoints.Guild(m.guild).Member(m),
|
||||||
CDN(root) {
|
CDN(root) {
|
||||||
return {
|
return {
|
||||||
Emoji: emojiID => `${root}/emojis/${emojiID}.png`,
|
Emoji: (emojiID, format = 'png') => `${root}/emojis/${emojiID}.${format}`,
|
||||||
Asset: name => `${root}/assets/${name}`,
|
Asset: name => `${root}/assets/${name}`,
|
||||||
Avatar: (userID, hash) => `${root}/avatars/${userID}/${hash}.${hash.startsWith('a_') ? 'gif' : 'png'}?size=2048`,
|
Avatar: (userID, hash) => `${root}/avatars/${userID}/${hash}.${hash.startsWith('a_') ? 'gif' : 'png'}?size=2048`,
|
||||||
Icon: (guildID, hash) => `${root}/icons/${guildID}/${hash}.jpg`,
|
Icon: (guildID, hash) => `${root}/icons/${guildID}/${hash}.jpg`,
|
||||||
|
|||||||
@@ -68,22 +68,17 @@ class Util {
|
|||||||
* Parses emoji info out of a string. The string must be one of:
|
* Parses emoji info out of a string. The string must be one of:
|
||||||
* * A UTF-8 emoji (no ID)
|
* * A UTF-8 emoji (no ID)
|
||||||
* * A URL-encoded UTF-8 emoji (no ID)
|
* * A URL-encoded UTF-8 emoji (no ID)
|
||||||
* * A Discord custom emoji (`<:name:id>`)
|
* * A Discord custom emoji (`<:name:id>` or `<a:name:id>`)
|
||||||
* @param {string} text Emoji string to parse
|
* @param {string} text Emoji string to parse
|
||||||
* @returns {Object} Object with `name` and `id` properties
|
* @returns {?Object} Object with `animated`, `name`, and `id` properties
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
static parseEmoji(text) {
|
static parseEmoji(text) {
|
||||||
if (text.includes('%')) text = decodeURIComponent(text);
|
if (text.includes('%')) text = decodeURIComponent(text);
|
||||||
if (text.includes(':')) {
|
if (!text.includes(':')) return { animated: false, name: text, id: null };
|
||||||
const [name, id] = text.split(':');
|
const m = text.match(/<?(a)?:(\w{2,32}):(\d{17,19})>?/);
|
||||||
return { name, id };
|
if (!m) return null;
|
||||||
} else {
|
return { animated: Boolean(m[1]), name: m[2], id: m[3] };
|
||||||
return {
|
|
||||||
name: text,
|
|
||||||
id: null,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user