내가 원하는 것은 소유자 가이 명령을 테스트 할 때마다 테스트라는 것입니다! 테스트라는 채널이 더 나아 가기 전에 @everyone에 대해서만보기가 있는지 먼저 확인하도록 업데이트하십시오. 어떻게 할 수 있습니까?
이것이 제가 지금 채널을 만드는 방법입니다.
init: (msg) => {
if (!msg.member.hasPermission('ADMINISTRATOR')) {
return sendEmbed(msg, 'You need to have the administrator permission to do this.')
}
//checks if channel excist some=exist
if (msg.guild.channels.some(r => r.name === "test")) {
//sendEmbed(msg, 'you already have a channel called test.')
} else {
msg.guild.createChannel('test', {
type: 'channel',
permissionOverwrites: [
{
id: msg.guild.defaultRole.id, // @everyone role
allow: ['READ_MESSAGES']
}
]
});
sendEmbed(msg, '#test created.')
}
const channel = client.guilds.get(msg.guild.id).channels.find(r => r.name === "test");
if (channel) {
sql.run('UPDATE settings SET partner = ? WHERE guildid = ?', [channel.id, msg.guild.id])
sendEmbed(msg, 'Success!')
} else {
sendEmbed(msg, 'please re-run this command to finalize')
}
},
그리고 여기에 테스트가 있습니다!
update: (msg) => {
i really dont know what to put here to check first the channel permissions before executing..
},
솔루션 감사합니다 MakeHellTal, 이것은 나를 위해 일했습니다.
const channel = client.guilds.get(msg.guild.id).channels.find(r => r.name === "test");
let everyone = msg.guild.roles.find(r => r.name === '@everyone');
let perms = channel.permissionsFor(everyone).serialize();
if (perms.VIEW_CHANNEL && perms.READ_MESSAGE_HISTORY && !perms.SEND_MESSAGES) {
}else{
console.log("not working")
}
TextChannel # permissionsFor ()
let everyone = message.guild.roles.cache.find(x => x.name === '@everyone');
let perms = channel.permissionsFor(everyone).serialize();
이것은 @everyone을 찾고 객체에서 perms를 얻습니다.
이것이 물체가 보이는 방식입니다. 그런 다음 ifs를 사용하여 각 파마를 확인하면 좋습니다!
채널이 모두에게 읽기 전용인지 확인하려면
if (perms.VIEW_CHANNEL && perms.READ_MESSAGE_HISTORY && !perms.SEND_MESSAGES) {
// do stuff here
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다