This commit is contained in:
2021-07-11 00:05:05 -05:00
parent 3b86744a5a
commit a68095ba90

View File

@@ -1,10 +1,14 @@
import { MessageActionRow, MessageButton, MessageButtonStyleResolvable, MessageComponent, MessageMenu, MessageMenuOption } from 'discord-buttons';
import { Message, TextChannel } from 'discord.js';
const Discord = require('discord.js'),
client = new Discord.Client(),
client = new Discord.Client({ ws: { intents: Discord.Intents.ALL } }),
disbut = require('discord-buttons');
disbut(client);
client.on('ready', () => {
console.log('ready')
})
declare interface OptMenuOptions {
label: string;
emoji?: string;
@@ -223,6 +227,8 @@ client.on('message', (m: Message) => {
});
const xor = (v1: boolean, v2: boolean) => (v1 || v2) && !(v1 && v2);
client.on('clickMenu', (menu: MessageComponent) => {
menu.reply.think(true).then(async () => {
@@ -240,6 +246,8 @@ client.on('clickMenu', (menu: MessageComponent) => {
rem: []
}
console.log(vals);
for (let i = 0; i < m.options.length; i++) {
let opt = m.options[i],
@@ -249,6 +257,13 @@ client.on('clickMenu', (menu: MessageComponent) => {
let role = await menu.guild.roles.fetch(roleid);
let names = []
menu.clicker.member.roles.cache.forEach(r => names.push(r.name));
let hasrole = menu.clicker.member.roles.cache.some(r => r.id === role.id),
needsrole = vals && vals.includes(opt.val);
console.log(role.name, `[${names.join()}]`, needsrole, hasrole)
if (vals && vals.includes(opt.val) && !menu.clicker.member.roles.cache.some(r => r.id === role.id)) {
await menu.clicker.member.roles.add(role);
changed.add.push(role.name);
@@ -260,9 +275,21 @@ client.on('clickMenu', (menu: MessageComponent) => {
}
}
}
menu.reply.edit('Updated Roles');
console.log('\n');
let message = [];
if (changed.add.length)
message.push(`Added \`${changed.add.join(', ')}\``);
if (changed.rem.length)
message.push(`Removed \`${changed.rem.join(', ')}\``);
menu.reply.edit(message.join('\n'));
} else
menu.reply.edit('Error: Unknown menu');
});
});
@@ -277,13 +304,20 @@ client.on('clickButton', (button: MessageComponent) => {
let matchingButtons = row.buttons.filter(opt => opt.id === button.id);
if (matchingButtons.length) {
await button.clicker.member.roles.add(matchingButtons[0].roleid);
let role = await button.guild.roles.fetch(matchingButtons[0].roleid);
if (button.clicker.member.roles.cache.some(r => r.id === role.id)) {
await button.clicker.member.roles.remove(role.id);
button.reply.edit(`Added \`${role.name}\``);
} else {
await button.clicker.member.roles.remove(role.id);
button.reply.edit(`Removed \`${role.name}\``);
}
break;
}
}
button.reply.edit('Updated Roles');
});
});