k44Eqha/misc.js

149 lines
6.0 KiB
JavaScript
Raw Normal View History

2018-05-12 07:19:31 +02:00
// join/leave
2018-07-14 01:29:48 +02:00
(async function(){
var webhook = new Discord.WebhookClient(config.webhooks.welcome[0], config.webhooks.welcome[1]);
2018-10-06 20:59:22 +02:00
dClient.on('local_guildMemberAdd', async member => {
2020-03-09 06:49:31 +01:00
let username = member.user.username.toLowerCase().includes('clyde') ? member.user.username.replace(/C/g,'Q').replace(/c/g,'q') : member.user.username;
webhook.send(`${member} joined.`, {username, avatarURL: member.user.displayAvatarURL({format:'png',size:2048}), disableMentions:'everyone'});
2018-05-12 07:19:31 +02:00
});
2018-10-06 20:59:22 +02:00
dClient.on('local_guildMemberRemove', async member => {
2020-03-09 06:49:31 +01:00
let username = member.user.username.toLowerCase().includes('clyde') ? member.user.username.replace(/C/g,'Q').replace(/c/g,'q') : member.user.username;
webhook.send(`${member.user.tag} left.`, {username, avatarURL: member.user.displayAvatarURL({format:'png',size:2048}), disableMentions:'everyone'});
2018-05-12 07:19:31 +02:00
});
})();
// view deleted channels
2018-07-14 01:29:48 +02:00
(async function(){
var vcid = config.channels.view_deleted_channels;
2018-07-14 02:04:39 +02:00
var rid = config.roles.viewing_deleted_channels;
2018-10-06 20:59:22 +02:00
dClient.on('local_voiceStateUpdate', async (oldState, newState) => {
2018-08-15 22:10:51 +02:00
if (oldState.channelID != vcid && newState.channelID == vcid) {
2018-05-12 07:19:31 +02:00
// member joined the channel
2020-04-12 05:27:00 +02:00
newState.member.roles.add(newState.member.guild.roles.resolve(rid));
2018-08-22 21:25:14 +02:00
} else if (oldState.channelID == vcid && newState.channelID != vcid) {
2018-05-12 07:19:31 +02:00
// member left the channel
2020-04-12 05:27:00 +02:00
newState.member.roles.remove(newState.member.guild.roles.resolve(rid));
2018-05-12 07:19:31 +02:00
}
});
2018-08-22 21:25:14 +02:00
})();
2018-09-01 22:27:56 +02:00
2018-10-03 21:01:20 +02:00
// prevent identical display names
/*{
let onName = async function(member){
let names = member.guild.members.map(m => m.name);
if (names.includes(member.displayName)) {
let nam = member.displayName.split(' ');
let num = nam.pop();
if (isNaN(num)) {
nam.push(num);
num = "2";
} else {
num = String(++num);
}
nam = nam.substr(0, num.length-1);
await member.setNickname(`${nam} ${num}`);
}
}
2018-10-06 20:59:22 +02:00
dClient.on("local_guildMemberUpdate", async (oldMember, newMember) => {
2018-10-03 21:01:20 +02:00
if (oldMember.displayName != newMember.displayName) onName(newMember);
});
}*/// didn't work D:
2018-09-01 22:27:56 +02:00
2020-11-17 20:58:28 +01:00
// arrange bots at bottom of list
2018-10-01 20:14:39 +02:00
(async function(){
2020-11-17 20:58:28 +01:00
let prefix = "\u17b5";
2018-10-01 20:14:39 +02:00
let onNick = async member => {
if (member.user.bot && !member.displayName.startsWith(prefix))
await member.setNickname(`${prefix}${member.displayName}`.substr(0,32));
};
2018-10-06 20:59:22 +02:00
dClient.on('local_guildMemberAdd', onNick);
dClient.on('local_guildMemberUpdate', async (oldMember, newMember) => {
2018-10-01 20:16:18 +02:00
if (newMember.displayName != oldMember.displayName) await onNick(newMember);
2018-10-01 20:14:39 +02:00
});
2020-11-17 20:58:28 +01:00
})();
2018-10-03 21:01:20 +02:00
// prevent identical display names
/*(async function(){
2018-10-06 20:59:22 +02:00
dClient.on("local_guildMemberUpdate", async (oldMember, newMember) => {
//var displayNames = newMember.guild.members.map(m => m.displayName);
//if (newMember.nickname && displayNames.includes(newMember.nickname)) newMember.setNickname('');
//else if (displayNames.includes(newMember.displayName)) newMember.setNickname(`${newMember.displayName}_`.substr(0,32));
for (let thisMember of newMember.guild.members) {
thisMember = thisMember[1];
if (thisMember.id == newMember.id) continue; //THIS WAS SUPPOSED TO MAKE IT NOT REPEATEDLY CHANGE YOUR NAME!
if (newMember.nickname == thisMember.displayName) {
newMember.setNickname('');
break;
}
else if (newMember.displayName == thisMember.displayName) {
newMember.setNickname(`${newMember.displayName}_`.substr(0,32));
break;
}
}
2018-10-03 21:01:20 +02:00
});
})();*/
2018-12-12 07:46:21 +01:00
// persistent emojis
2018-12-13 07:12:24 +01:00
dClient.on("local_emojiDelete", async emoji => {
2019-08-05 02:39:27 +02:00
console.log("emoji deleted:", emoji.name, emoji.url);
2019-04-04 00:42:34 +02:00
if (global.disableEmojiProtection) return;
2019-08-05 02:39:27 +02:00
if (emoji.name.toLowerCase().includes('delete')) return;
async function readdEmoji() {
await emoji.guild.emojis.create(emoji.url, emoji.name);
delete readdEmoji;
}
// re-add emoji in 5 to 10 minutes
setTimeout(() => {
if (readdEmoji) readdEmoji();
}, 300000 + Math.random() * 300000);
// wouldn't want emoji to be lost if process is stopped before timeout ends
exitHook(callback => {
if (readdEmoji) readdEmoji().then(() => callback());
else callback();
});
2018-12-13 07:12:24 +01:00
});
// pinboard // this was removed but no harm leaving it working ¯\_(ツ)_/¯
2018-12-13 07:12:24 +01:00
(async function(){
var webhook = new Discord.WebhookClient(config.webhooks.pinboard[0], config.webhooks.pinboard[1]);
dClient.on("local_messageReactionAdd", async (messageReaction, user) => {
if (!(messageReaction.emoji.name == "📌" || messageReaction.emoji.name == "📍")) return;
2020-04-12 05:27:00 +02:00
if (!(user.id == messageReaction.message.author.id || messageReaction.message.guild.members.resolve(user.id).hasPermission('MANAGE_MESSAGES'))) return;// if message is theirs or user is mod
2018-12-13 07:12:24 +01:00
var message = messageReaction.message;
2018-12-13 07:22:28 +01:00
await webhook.send(`https://discordapp.com/channels/${message.guild.id}/${message.channel.id}/${message.id}`, {embeds:[{
2018-12-13 07:12:24 +01:00
color: (message.member && message.member.displayColor) || undefined,
author: {
name: (message.member && message.member.displayName) || message.author.username,
icon_url: message.author.avatarURL({format:'png'})
},
description: message.content,
timestamp: message.createdAt,
image: (message.attachments.first() && message.attachments.first().width) ? {url:message.attachments.first().url} : undefined,
footer: {
text: `#${message.channel.name}`
}
}]});
});
})();
// allow anyone to pin a message via reaction
dClient.on("local_messageReactionAdd", async (messageReaction) => {
if (messageReaction.emoji.name == "📌" || messageReaction.emoji.name == "📍")
await messageReaction.message.pin();
});
2018-12-13 07:12:24 +01:00