discord.js - 如何检查消息是否包含表情符号 discord.js
问题描述
我需要检查用户发送的消息是否包含表情符号,因为我的数据库无法存储此类数据。所以我想我会使用a message.content.match()
ormessage.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
解决方案
每当在消息中使用表情时,它都遵循以下格式:<:OmegaStonks:723370807308582943>,其中表情的名称是“OmegaStonks”,id 链接到图像的链接,如下所示:https://cdn .discordapp.com/emojis/723370807308582943.png 使用正则表达式检测这种模式非常容易。
<a?:.+?:\d+>
它采用从第一个 : 到第二个 : 的任何字符(我使用 ? 使通配符 . 尽快停止)。你也不能在表情名称中使用冒号,所以它不会突然停在那里。
这是你可以做到的
client.on('message', msg => {
if(msg.content.match(/<a?:.+?:\d+>/)) return; //or whatever action(s) you want to do
})
推荐阅读
- docker - docker-compose 的两种“命令”形式的行为是否不同?
- php - 在 WordPress 编辑器中替换 TinyMCE 字体 - 默认字体不会消失
- javascript - 如何在左右滑动行和列时降低响应鼠标事件的灵敏度?
- java - 打印没有额外空白或行的二维数组
- html - 为什么添加 `sm-4` 会使嵌入视频的边距过宽?
- r - 格式化数据并使其正常运行的问题
- python - 获取每个分层熊猫系列的第一行
- flutter - 带有文本的图像全屏(_getTellText(text)扩展颤动
- c++ - 在 C++ 中声明函数的不同方法
- swift - SwiftUI:根据字符串长度动态更改字体大小