2022-06-07 17:32:32 +07:00
|
|
|
import {
|
|
|
|
|
Message,
|
|
|
|
|
CommandInteraction,
|
2022-07-04 21:28:04 +07:00
|
|
|
Guild,
|
|
|
|
|
PermissionsBitField,
|
|
|
|
|
PermissionResolvable
|
2022-06-07 17:32:32 +07:00
|
|
|
} from 'discord.js';
|
|
|
|
|
import { I18n } from 'i18n';
|
|
|
|
|
|
|
|
|
|
import DiscordProvider from '../../providers/Discord';
|
|
|
|
|
import Locale from '../../services/Locale';
|
|
|
|
|
|
|
|
|
|
import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule';
|
|
|
|
|
import {
|
|
|
|
|
makeInfoEmbed,
|
|
|
|
|
makeErrorEmbed,
|
|
|
|
|
makeProcessingEmbed,
|
|
|
|
|
sendHybridInteractionMessageResponse
|
|
|
|
|
} from '../../utils/DiscordMessage';
|
|
|
|
|
|
|
|
|
|
import * as PrefixModule from './Prefix';
|
2022-06-29 22:13:37 +07:00
|
|
|
import * as LanguageModule from './Language';
|
2022-06-07 17:32:32 +07:00
|
|
|
import * as ServiceAnnouncementModule from './ServiceAnnouncement';
|
|
|
|
|
|
|
|
|
|
export const COMMON_EMBEDS = {
|
2022-07-05 20:35:22 +07:00
|
|
|
MEMBER_NO_PERMISSION: (data: HybridInteractionMessage, locale: I18n, permissions: PermissionResolvable[]) => {
|
2022-07-04 21:28:04 +07:00
|
|
|
|
|
|
|
|
let allPermissions = [];
|
|
|
|
|
for(const value of permissions) {
|
|
|
|
|
allPermissions.push(new PermissionsBitField(value).toArray());
|
|
|
|
|
}
|
2022-06-07 17:32:32 +07:00
|
|
|
return makeErrorEmbed({
|
2022-07-05 20:35:22 +07:00
|
|
|
title: locale.__('common.member_no_permissions'),
|
|
|
|
|
description: locale.__('common.member_no_permissions_description', { PERMISSIONS: allPermissions.join(', ')}),
|
|
|
|
|
user: data.getUser()
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
BOT_NO_PERMISSION: (data: HybridInteractionMessage, locale: I18n, permissions: PermissionResolvable[]) => {
|
|
|
|
|
|
|
|
|
|
let allPermissions = [];
|
|
|
|
|
for(const value of permissions) {
|
|
|
|
|
allPermissions.push(new PermissionsBitField(value).toArray());
|
|
|
|
|
}
|
|
|
|
|
return makeErrorEmbed({
|
|
|
|
|
title: locale.__('common.bot_no_permissions'),
|
|
|
|
|
description: locale.__('common.bot_no_permissions_description', { PERMISSIONS: allPermissions.join(', ')}),
|
2022-06-07 17:32:32 +07:00
|
|
|
user: data.getUser()
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
PROCESSING: (data: HybridInteractionMessage, locale: I18n) => {
|
|
|
|
|
return makeProcessingEmbed({
|
|
|
|
|
icon: data.isMessage() ? undefined : '⌛',
|
|
|
|
|
title: locale.__('common.processing'),
|
2022-06-28 14:38:16 +07:00
|
|
|
description: locale.__('common.processing_description'),
|
2022-06-07 17:32:32 +07:00
|
|
|
user: data.getUser()
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const EMBEDS = {
|
|
|
|
|
SETTINGS_INFO: (data: HybridInteractionMessage, locale: I18n, guild: Guild) => {
|
|
|
|
|
return makeInfoEmbed({
|
|
|
|
|
title: locale.__('settings.title'),
|
2022-06-27 20:28:01 +07:00
|
|
|
description: locale.__('settings.description', {
|
|
|
|
|
BOT_NAME: DiscordProvider.client.user!.username,
|
|
|
|
|
GUILD_NAME: guild.name
|
|
|
|
|
}),
|
2022-06-07 17:32:32 +07:00
|
|
|
fields: [
|
|
|
|
|
{
|
|
|
|
|
name: locale.__('common.available_args'),
|
|
|
|
|
value: locale.__('settings.valid_args'),
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
user: data.getUser()
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default class Settings extends DiscordModule {
|
|
|
|
|
public id = 'Discord_Settings';
|
|
|
|
|
public commands = ['settings'];
|
|
|
|
|
public commandInteractionName = 'settings';
|
|
|
|
|
|
|
|
|
|
async GuildOnModuleCommand(args: any, message: Message) {
|
|
|
|
|
await this.run(new HybridInteractionMessage(message), args);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async GuildModuleCommandInteractionCreate(interaction: CommandInteraction) {
|
|
|
|
|
await this.run(new HybridInteractionMessage(interaction), interaction.options);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async run(data: HybridInteractionMessage, args: any) {
|
|
|
|
|
const guild = data.getGuild();
|
|
|
|
|
if (!guild) return;
|
|
|
|
|
|
|
|
|
|
const locale = await Locale.getGuildLocale(guild.id);
|
|
|
|
|
|
|
|
|
|
let query;
|
|
|
|
|
|
|
|
|
|
if (data.isMessage()) {
|
|
|
|
|
if (args.length === 0)
|
|
|
|
|
return await sendHybridInteractionMessageResponse(data, {
|
|
|
|
|
embeds: [EMBEDS.SETTINGS_INFO(data, locale, guild)]
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
query = args[0].toLowerCase();
|
2022-06-29 15:27:42 +07:00
|
|
|
} else if (data.isApplicationCommand()) {
|
2022-06-07 17:32:32 +07:00
|
|
|
query = args.getSubcommand();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (query) {
|
|
|
|
|
case 'info':
|
|
|
|
|
return await sendHybridInteractionMessageResponse(data, {
|
|
|
|
|
embeds: [EMBEDS.SETTINGS_INFO(data, locale, guild)]
|
|
|
|
|
});
|
|
|
|
|
case 'prefix':
|
|
|
|
|
return await PrefixModule.default(data, args, guild, locale);
|
2022-06-29 22:13:37 +07:00
|
|
|
case 'language':
|
|
|
|
|
return await LanguageModule.default(data, args, guild, locale);
|
2022-06-07 17:32:32 +07:00
|
|
|
case 'enableserviceannouncement':
|
|
|
|
|
return await ServiceAnnouncementModule.setEnableServiceAnnouncement(data, args, guild, locale);
|
|
|
|
|
case 'serviceannouncementchannel':
|
|
|
|
|
return await ServiceAnnouncementModule.setServiceAnnouncementChannel(data, args, guild, locale);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|