如何检查消息是否包含表情符号 discord.js

时间:2021-07-13 18:13:36

标签: discord.js

我需要检查用户发送的消息是否包含表情符号,因为我的数据库无法存储此类数据。所以我想我会使用 message.content.match()message.content.includes() 但当我使用它时,它仍然不够。我正在考虑制作类似黑名单但用于表情符号的东西,然后我意识到我需要保存所有表情符号的黑名单,所以我放弃了。我的问题是,你知道更简单的方法吗?我正在寻找我的问题的解决方案,但我没有找到任何东西。 非常感谢您的帮助。

if(message.author.id!='botid' && message.author.id===userdbId && message.content.match(/<a?:.+?:\d+>/)){
    const name = args.join(" "); 
    const username = name.slice(0);
    conn.query(`UPDATE users SET ignick='`+username+`' WHERE userID='${message.author.id}'`);
    console.log(username);
    message.channel.send("success message"); 
    conn.end(err => {
        if(err){
        throw error;
        }
        console.log('Disconnected from database');
       })
}
else{
console.log('bot has been stopped from adding his message to database');

}```
At top of this code i made a connect function and two constructors to pull from database userId

1 个答案:

答案 0 :(得分:0)

<块引用>

每当在消息中使用表情时,它都遵循以下格式:<:OmegaStonks:723370807308582943>,其中表情的名称是“OmegaStonks”,id 链接到图像的链接,如下所示:{{ 3}} 使用正则表达式检测这种模式非常容易。 <a?:.+?:\d+> 它采用从第一个 : 到第二个 : 的任何字符(我使用 ? 使通配符 . 尽快停止)。表情名称中也不能有冒号,所以它不会突然停在那里。

https://cdn.discordapp.com/emojis/723370807308582943.png

你可以这样做

client.on('message', msg => {
if(msg.content.match(/<a?:.+?:\d+>/)) return; //or whatever action(s) you want to do
})