diff options
| author | Max Isom <[email protected]> | 2022-03-12 18:41:53 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-03-12 17:41:53 -0600 |
| commit | 20eaed4a16eeb9eec44a38a1f176711591ce342f (patch) | |
| tree | 208d3a8c863605b9afab63fb62fe58b1a8c170cc /src | |
| parent | e1589c30131cc68f4c846bd8e5c77a8a3c3c559b (diff) | |
| download | muse-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.ts | 2 | ||||
| -rw-r--r-- | src/events/guild-create.ts | 25 | ||||
| -rw-r--r-- | src/utils/update-permissions-for-guild.ts | 9 |
3 files changed, 32 insertions, 4 deletions
@@ -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 => ({ |
