#javascript #node.js #discord #discord.js
#javascript #node.js #Discord #discord.js
Вопрос:
Моя цель — иметь возможность получать самые последние опубликованные смайлики в канале и размещать их информацию в канале без <:
, :
, >
которые присутствуют внутри информации о смайликах.
Вот код, который у меня есть на данный момент:
"yoink": {
description: "Yoink an emoji",
usage: "`$yoink`",
category: "images",
process: async function(msg, parameters) {
let a1 = await msg.channel.messages.fetch()
let a2 = a1.filter(m => msg.content.includes('<'))
let emoji = a2.first()
if (a2) {
msg.channel.send(`${emoji}`)
}
}
},
Это работает, но он просто отображает смайлики вместе с синтаксисом команды, что фактически создает бесконечный цикл команд, lol.
Теперь мне не нужно использовать регулярные выражения, но я пытаюсь понять, как это работает.
Каков наилучший способ сделать это?
Комментарии:
1. это можно обработать, например
messages.map(MSG_TO_EMOJI_WITH_PATTERN).filter(IS_EMOJI_MSG)
, для получения списка смайликов
Ответ №1:
Вы можете использовать RegEx
для захвата идентификатора смайлика, а затем извлекать этот смайлик через свой client
, чтобы отобразить его информацию. Вот пример во фрагменте кода:
// example message
const message = '<:BBwave:562730391362994178> <:MarioWave:725159909758337055> Welcome to the server!'
const [lastEmoji, ...others] = message.match(/<a?:. :(d{18})>/).reverse();
console.log(lastEmoji);
// const emote = message.client.emojis.cache.get(emojiID);
// console.log(emote.name, emote.id)
В моей String.prototype.match()
функции я использовал это RexEx
:
/<a?:. :(d{18})>/
a? - there is only an 'a' in the emoji if it is animated. question mark means optional
. - the emojis name. '.' means any character, and ' ' means one or more
d{18} - the emojis id. 'd' means any standard digit, and {18} means 18 of them in a row
(d{18}) - by putting the id in parentheses, I can capture it
<::> - every other character is literal
Комментарии:
1. Еще раз спасибо за вашу помощь и за небольшое руководство. Мне это определенно нужно!