javascript - discord.js 链接拦截器
问题描述
我目前正在尝试编写 Discord 链接阻止程序:
我的代码:
client.on('message', (message) => {
if (message.content.includes('discord.gg/')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
if (message.content.includes('discordapp.com/')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
if (message.content.includes('https:')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
if (message.content.includes('http:')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
if (message.content.includes('www.')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
})
如何将所有关键字(http: ; discord.gg/ ; 等)放在一个“if part”中?
我需要那个,因为我希望机器人只写一次消息,即使你写了“https://discord.gg/”。如果您只写“https://discord.gg/”,则消息会因为第一个“https://”而出现两次,而因为“discord.gg/”而出现一次。
解决方案
选项 1 - 否则如果
当其中一个if
语句匹配时,else if
将跳过所有后续块。
client.on('message', (message) => {
if (message.content.includes('discord.gg/')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
else if (message.content.includes('discordapp.com/')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
else if (message.content.includes('https:')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
else if (message.content.includes('http:')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
else if (message.content.includes('www.')) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
})
选项 2 - 正则表达式
您可以将所有搜索组合成一个正则表达式
client.on('message', (message) => {
if (message.content.match(/discord\.gg|discordapp\.com|https?:|www\./) !== null) {
message.delete()
.then(message.channel.send('<@!' + message.member + '>' + config.link_deleted_chat_message))
.then(message.member.send('<@!' + message.member + '>' + config.link_deleted_dm_message))
}
})
推荐阅读
- sql - LEFT OUTER JOIN with 'field IS NULL' in WHERE 用作 INNER JOIN
- java - 使用带有 AquaLookAndFeel 的 JLayer 绘图的严重性能问题
- sql - SQL - 查找包含相同字符串并增加参考值的记录
- android - 如何使 RecyclerView 与 Composable ViewHolder 渲染更快?
- react-hooks - 如何使用 commercejs 检索方法单击查看产品详细信息
- node.js - "_models2.default".method 错误使用 mongoose、graphql、node、apolloserver
- python - 你能帮我让我的按钮在 Pygame 中工作吗?
- c - 如何在C中一次扫描多个字符?
- javascript - 当表单提交和刷新我的加载屏幕的页面再次出现时?
- rust - 如何在 NixOS 和 cargo 下安装具有 sqlite 支持的diesel-cli?