我需要检查用户发送的消息是否包含表情符号,因为我的数据库无法存储此类数据。所以我想我会使用 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
答案 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
})