对消息中缺少 ID 的表情符号做出反应

时间:2021-07-14 11:09:03

标签: javascript discord discord.js

我正在尝试构建一个系统,让 webhook 从 Google Sheet 发布一条消息,然后我的机器人用其中包含的表情符号对消息做出反应。我已经让 webhook 很好地发布了消息,并且我让 Bot 对正常消息做出了正确的反应。不过,我不能让两者一起工作。我怀疑问题在于 webhook 提供的表情符号不完整(:emoji:,而不是 <:emoji:1234567890:>)。我不知道有什么方法可以从表情符号字符串中获取 ID#,或者从消息对象中提取格式正确的表情符号。有没有办法做到这些或通过其他方式使这项工作?这是我所拥有的:

const emojiRegex = require('emoji-regex/RGI_Emoji.js');

client.on('message', message => {
    const re = emojiRegex();
    let match;
    let emojis = [];
    while ((match = re.exec(message.content)) != null) {
        emojis.push(match[0]);
      }
    console.log(emojis);
    if (emojis) {
        emojis.forEach( e => {
            message.react(e);
        })
    }
});

或者:

emojis = message.content.match(/:.+?:/g);

message.guild.emojis 似乎没有达到我希望的效果。

感谢您提供的任何帮助。


编辑:我现在也尝试了以下但没有成功:

client.on('message', message => {
    let emojis = [];
    let e1 = [];
    let e2 = [];

    e1 = message.content.match(/:.+?:/g);
    console.log(e1);
    if (e1) { 
        e1.forEach( e => {
            e2.push(e.match(/[a-zA-Z0-9_]+/g).toString());
        })
    }
    console.log(e2);
    if (e2) {
        e2.forEach( e => {
            emojis.push(client.emojis.cache.find(emoji => emoji.name === e));
        })
    }
    console.log(emojis);
    if (emojis) {
        emojis.forEach( e => {
            message.react(e);
        })
    }
});

1 个答案:

答案 0 :(得分:0)

这是一个不完整的解决方案,因为它的工作时间不到一半。我认为这是因为 @media (max-width: 900px) { .banner .row .image-container { .desktopimage { display: none; } .mobileimage { display: block; } } } 有一个不完整的 unicode 表情符号可能名称列表。如果您知道更好的解决方案,我很想听听。

emoji-name-map