mirror of
https://github.com/BluemediaDev/muse.git
synced 2025-05-09 19:51:36 +02:00
Allow member who invited Muse to do initial setup (#561)
This commit is contained in:
parent
e1589c3013
commit
20eaed4a16
6 changed files with 37 additions and 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);
|
||||
|
|
|
@ -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.');
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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 => ({
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue