mirror of
https://github.com/kirameki-cafe/Yumi.git
synced 2026-09-14 03:09:59 +00:00
Localized settings and code clean up
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
import {
|
||||
Message,
|
||||
Interaction,
|
||||
CommandInteraction,
|
||||
Permissions,
|
||||
ThreadChannel,
|
||||
GuildChannel,
|
||||
Guild
|
||||
} from 'discord.js';
|
||||
import { I18n } from 'i18n';
|
||||
|
||||
import DiscordProvider from '../../providers/Discord';
|
||||
import Prisma from '../../providers/Prisma';
|
||||
import Cache from '../../providers/Cache';
|
||||
import Locale from '../../services/Locale';
|
||||
|
||||
import DiscordModule, { HybridInteractionMessage } from '../../utils/DiscordModule';
|
||||
import {
|
||||
makeInfoEmbed,
|
||||
makeErrorEmbed,
|
||||
makeSuccessEmbed,
|
||||
makeProcessingEmbed,
|
||||
sendHybridInteractionMessageResponse
|
||||
} from '../../utils/DiscordMessage';
|
||||
|
||||
import * as PrefixModule from './Prefix';
|
||||
import * as ServiceAnnouncementModule from './ServiceAnnouncement';
|
||||
|
||||
export const COMMON_EMBEDS = {
|
||||
NO_PERMISSION: (data: HybridInteractionMessage, locale: I18n) => {
|
||||
return makeErrorEmbed({
|
||||
title: locale.__('common.no_permissions'),
|
||||
description: locale.__('common.no_permissions_description','ADMINISTRATOR'),
|
||||
user: data.getUser()
|
||||
});
|
||||
},
|
||||
PROCESSING: (data: HybridInteractionMessage, locale: I18n) => {
|
||||
return makeProcessingEmbed({
|
||||
icon: data.isMessage() ? undefined : '⌛',
|
||||
title: locale.__('common.processing'),
|
||||
user: data.getUser()
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const EMBEDS = {
|
||||
SETTINGS_INFO: (data: HybridInteractionMessage, locale: I18n, guild: Guild) => {
|
||||
return makeInfoEmbed({
|
||||
title: locale.__('settings.title'),
|
||||
description: locale.__('settings.description', DiscordProvider.client.user!.username, guild.name),
|
||||
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();
|
||||
} else if (data.isSlashCommand()) {
|
||||
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);
|
||||
case 'enableserviceannouncement':
|
||||
return await ServiceAnnouncementModule.setEnableServiceAnnouncement(data, args, guild, locale);
|
||||
case 'serviceannouncementchannel':
|
||||
return await ServiceAnnouncementModule.setServiceAnnouncementChannel(data, args, guild, locale);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user