Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建漏洞扫描程序ping@everyone?Discord.js_Javascript_Node.js_Discord_Discord.js - Fatal编程技术网

Javascript 如何创建漏洞扫描程序ping@everyone?Discord.js

Javascript 如何创建漏洞扫描程序ping@everyone?Discord.js,javascript,node.js,discord,discord.js,Javascript,Node.js,Discord,Discord.js,我想为服务器管理员创建一个有用的团队。 多亏了这个命令,bot显示了您可以在这里ping每个人的频道 谁对如何创建此网站有任何建议?你可以在公会中反复浏览文本频道s,寻找频道,比如说,@everyone拥有提及每个人权限,允许任何人点击@everyone或@here 例如,下面的代码查找公会中的所有文本频道,然后检查@everyone是否有权限覆盖,然后检查是否明确允许提及每个人 const vulnerableChannels=[]; const channels=message.guild.

我想为服务器管理员创建一个有用的团队。 多亏了这个命令,bot显示了您可以在这里ping每个人的频道


谁对如何创建此网站有任何建议?

你可以在公会中反复浏览
文本频道
s,寻找频道,比如说,
@everyone
拥有
提及每个人
权限,允许任何人点击@everyone或@here

例如,下面的代码查找公会中的所有
文本频道,然后检查
@everyone
是否有权限覆盖,然后检查
是否明确允许提及每个人

const vulnerableChannels=[];
const channels=message.guild.channels.cache.array().filter(channel=>channel.type=='text');
for(信道的常数信道){
if(channel.permissionOverwrites.filter(overwrite=>overwrite.id==message.guild.id&&overwrite.allow.has('notice_EVERYONE')).array().length>0)vulnerableChannels.push(channel.id);
}
let output='以下通道易受攻击:\n';
漏洞通道.forEach(通道=>output=output.concat(`•\n`));
message.channel.send(输出);

@user15517071的答案会起作用,但前提是
@everybody
在默认情况下没有
“提及所有人”
权限。如果您还想检查,则需要更新过滤器

查看下面的代码,我添加了大量注释:

const textChannels=message.guild.channels.cache.filter((ch)=>ch.type==='text');
const caneveryonementation=message.guild.roles.everybody.permissions.has('antify_everybody');
const channels此处提及的每个人=textChannels
.map((频道)=>{
//如果没有覆盖,每个人都可以默认提到@everyone
如果(!channel.permissionOverwrites.size&&caneveryonementation)
返回通道;
//用于检查覆盖是否允许提及@everyone的筛选器
常量覆盖过滤器=(覆盖)=>{
//仅检查覆盖是否属于@everyone角色
if(overwrite.id!==message.guild.id)
返回false;
//检查是否允许提及所有人
if(overwrite.allow.has('notify_EVERYONE'))
返回true;
//或者默认情况下是允许的,并且在此覆盖中不会被拒绝
if(caneveryonementation&!overwrite.deny.has('antify_EVERYONE'))
返回true;
//所有其他情况
返回false;
};
const overwrites=channel.permissionOverwrites.filter(overwriteFilter);
//仅当存在“有效”覆盖时才返回通道
return overwrites.size>0?通道:空;
})
//删除空值
.过滤器(布尔值);
const channelList=channelswwhereeveryonecanbeeded.join('\n');
message.channel.send(`人们可以在以下频道中提及所有人:\n${channelList}`);