65 lines
2.9 KiB
JavaScript
65 lines
2.9 KiB
JavaScript
|
/*
|
||
|
* Made By Helcel
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Script : PhantomDiscRole.js
|
||
|
* Purpose : Gives roles based on reactions....
|
||
|
*/
|
||
|
(function() {
|
||
|
var messageId = $.getSetIniDbString('discordSettings', 'selectRole', '! Select your Role !'),
|
||
|
channelName = $.getSetIniDbString('discordSettings', 'roleChannel', ''),
|
||
|
notInit = false;
|
||
|
|
||
|
var Snowflake = Packages.discord4j.common.util.Snowflake,
|
||
|
ReactionEmoji = Packages.discord4j.core.object.reaction.ReactionEmoji,
|
||
|
Permission = Packages.discord4j.rest.util.Permission; //core.object.util.Permission;
|
||
|
|
||
|
$.bind('webPanelSocketUpdate', function(event) {
|
||
|
if (event.getScript().equalsIgnoreCase('./discord/custom/phantomDiscRoles.js')) {
|
||
|
messageId = $.getIniDbString('discordSettings', 'selectRole', '! Select your Role !');
|
||
|
channelName = $.getIniDbString('discordSettings', 'roleChannel', '');
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$.bind('discordMessageReaction', function(event) {
|
||
|
var reactionEvent = event.getEvent();
|
||
|
var reactionChannel = reactionEvent.getChannel().block();
|
||
|
var reactionEmoji = reactionEvent.emoji;
|
||
|
var reactionMessage = reactionEvent.getMessage().block();
|
||
|
var reactionMessageText = reactionMessage.getContent();
|
||
|
var reactionUser = reactionEvent.getUserId();
|
||
|
|
||
|
if(!reactionMessage.getAuthorAsMember().block().getHighestRole().block().getPermissions().contains(Permission.ADMINISTRATOR)) return;
|
||
|
if(reactionMessageText.indexOf(messageId)!=0) return;
|
||
|
|
||
|
var mapping = reactionMessageText.replace(messageId,"").split("\n")
|
||
|
var mojirole = {}
|
||
|
for(var i = 0; i < mapping.length; ++i){
|
||
|
var map = mapping[i]
|
||
|
if(map.length()<3) continue;
|
||
|
var mape = map.split(" ");
|
||
|
if(mape.length!=2) continue;
|
||
|
var clean = mape[0].substring(mape[0].lastIndexOf(':')+1).replace('>','');
|
||
|
mojirole[clean] = mape[1].replace("<@&",'').replace(">",'');
|
||
|
|
||
|
if(notInit){
|
||
|
reactionMessage.addReaction(ReactionEmoji.unicode(clean)).block();
|
||
|
}
|
||
|
}
|
||
|
notInit = false;
|
||
|
var mojiid = reactionEmoji.asUnicodeEmoji().isPresent()? (reactionEmoji.asUnicodeEmoji().get().getRaw()) : (reactionEmoji.asCustomEmoji().get().getId().asString());
|
||
|
if(mojirole[mojiid]){
|
||
|
var roleid = Snowflake.of(mojirole[mojiid])
|
||
|
if(event.type.ordinal())
|
||
|
reactionEvent.getUser().block().asMember(reactionEvent.getGuildId().get()).block().removeRole(roleid).block()
|
||
|
else
|
||
|
reactionEvent.getUser().block().asMember(reactionEvent.getGuildId().get()).block().addRole(roleid).block()
|
||
|
}else{
|
||
|
reactionMessage.removeReaction(reactionEmoji,reactionUser).block();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$.bind('initReady', function() {});
|
||
|
})();
|