aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Isom <[email protected]>2022-03-12 18:41:53 -0500
committerGitHub <[email protected]>2022-03-12 17:41:53 -0600
commit20eaed4a16eeb9eec44a38a1f176711591ce342f (patch)
tree208d3a8c863605b9afab63fb62fe58b1a8c170cc /src
parente1589c30131cc68f4c846bd8e5c77a8a3c3c559b (diff)
downloadmuse-20eaed4a16eeb9eec44a38a1f176711591ce342f.tar.xz
muse-20eaed4a16eeb9eec44a38a1f176711591ce342f.zip
Allow member who invited Muse to do initial setup (#561)
Diffstat (limited to 'src')
-rw-r--r--src/bot.ts2
-rw-r--r--src/events/guild-create.ts25
-rw-r--r--src/utils/update-permissions-for-guild.ts9
3 files changed, 32 insertions, 4 deletions
diff --git a/src/bot.ts b/src/bot.ts
index 0a041ec..5803a64 100644
--- a/src/bot.ts
+++ b/src/bot.ts
@@ -152,7 +152,7 @@ export default class {
spinner.text = '📡 updating permissions...';
await Promise.all(this.client.guilds.cache.map(async guild => updatePermissionsForGuild(guild)));
- spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=36700160`);
+ spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=36700288`);
});
this.client.on('error', console.error);
diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts
index 630d6cb..d71acda 100644
--- a/src/events/guild-create.ts
+++ b/src/events/guild-create.ts
@@ -6,16 +6,30 @@ import Config from '../services/config.js';
import {prisma} from '../utils/db.js';
import {REST} from '@discordjs/rest';
import {Routes} from 'discord-api-types/v9';
+import updatePermissionsForGuild from '../utils/update-permissions-for-guild.js';
export default async (guild: Guild): Promise<void> => {
+ let invitedBy;
+ try {
+ const logs = await guild.fetchAuditLogs({type: 'BOT_ADD'});
+ invitedBy = logs.entries.find(entry => entry.target?.id === guild.client.user?.id)?.executor;
+ } catch {}
+
+ if (!invitedBy) {
+ console.warn(`Could not find user who invited Muse to ${guild.name} from the audit logs.`);
+ }
+
await prisma.setting.upsert({
where: {
guildId: guild.id,
},
create: {
guildId: guild.id,
+ invitedByUserId: invitedBy?.id,
+ },
+ update: {
+ invitedByUserId: invitedBy?.id,
},
- update: {},
});
const config = container.get<Config>(TYPES.Config);
@@ -33,7 +47,12 @@ export default async (guild: Guild): Promise<void> => {
);
}
- const owner = await guild.fetchOwner();
+ await updatePermissionsForGuild(guild);
- await owner.send('👋 Hi! Someone (probably you) just invited me to a server you own. I can\'t be used by your server members until you complete setup by running /config set-role in your server.');
+ if (invitedBy) {
+ await invitedBy.send('👋 Hi! You just invited me to a server. I can\'t be used by your server members until you complete setup by running /config set-role in your server.');
+ } else {
+ const owner = await guild.fetchOwner();
+ await owner.send('👋 Hi! Someone (probably you) just invited me to a server you own. I can\'t be used by your server members until you complete setup by running /config set-role in your server.');
+ }
};
diff --git a/src/utils/update-permissions-for-guild.ts b/src/utils/update-permissions-for-guild.ts
index ca7c427..64110a7 100644
--- a/src/utils/update-permissions-for-guild.ts
+++ b/src/utils/update-permissions-for-guild.ts
@@ -26,6 +26,15 @@ const updatePermissionsForGuild = async (guild: Guild) => {
permission: false,
},
];
+
+ if (settings.invitedByUserId) {
+ permissions.push({
+ id: settings.invitedByUserId,
+ type: 'USER',
+ permission: true,
+ });
+ }
+
const commands = await guild.commands.fetch();
await guild.commands.permissions.set({fullPermissions: commands.map(command => ({