/[sudobot]/trunk/src/commands/settings/ConfigCommand.ts
ViewVC logotype

Diff of /trunk/src/commands/settings/ConfigCommand.ts

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 344 by rakin, Mon Jul 29 17:29:40 2024 UTC revision 393 by rakin, Mon Jul 29 17:29:59 2024 UTC
# Line 1  Line 1 
1  import { CommandInteraction, Message } from 'discord.js';  /**
2    * This file is part of SudoBot.
3    *
4    * Copyright (C) 2021-2022 OSN Inc.
5    *
6    * SudoBot is free software; you can redistribute it and/or modify it
7    * under the terms of the GNU Affero General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10    *
11    * SudoBot is distributed in the hope that it will be useful, but
12    * WITHOUT ANY WARRANTY; without even the implied warranty of
13    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14    * GNU Affero General Public License for more details.
15    *
16    * You should have received a copy of the GNU Affero General Public License
17    * along with SudoBot. If not, see <https://www.gnu.org/licenses/>.
18    */
19    
20    import { AutocompleteInteraction, CacheType, CommandInteraction, Message } from 'discord.js';
21  import BaseCommand from '../../utils/structures/BaseCommand';  import BaseCommand from '../../utils/structures/BaseCommand';
22  import DiscordClient from '../../client/Client';  import DiscordClient from '../../client/Client';
23  import CommandOptions from '../../types/CommandOptions';  import CommandOptions from '../../types/CommandOptions';
# Line 6  import InteractionOptions from '../../ty Line 25  import InteractionOptions from '../../ty
25  import MessageEmbed from '../../client/MessageEmbed';  import MessageEmbed from '../../client/MessageEmbed';
26  import dot from 'dot-object';  import dot from 'dot-object';
27  import { fetchEmoji } from '../../utils/Emoji';  import { fetchEmoji } from '../../utils/Emoji';
28    import AutoCompleteOptions from '../../types/AutoCompleteOptions';
29    
30  export default class ConfigCommand extends BaseCommand {  export default class ConfigCommand extends BaseCommand {
31      supportsInteractions: boolean = true;      supportsInteractions: boolean = true;
32        configDotted: { [key: string]: string[] } = {};
33    
34      constructor() {      constructor() {
35          super('config', 'settings', []);          super('config', 'settings', []);
36            const config = DiscordClient.client.config.props;
37            
38            for (const guild in config) {
39                this.configDotted[guild] = Object.keys(dot.dot({...config[guild]}));
40            }
41        }
42    
43        async autoComplete(client: DiscordClient, interaction: AutocompleteInteraction<CacheType>, options: AutoCompleteOptions): Promise<void> {
44            const focused = interaction.options.getFocused(true);
45    
46            if (focused.name !== "key") {
47                return;
48            }
49    
50            if (focused.value === '') {
51                await interaction.respond(this.configDotted[interaction.guild!.id].slice(0, 25).map(key => ({
52                    name: key,
53                    value: key,
54                })));
55    
56                return;
57            }
58    
59            const response = [];
60    
61            for (const key of this.configDotted[interaction.guild!.id]) {
62                if (key.includes(focused.value)) {
63                    response.push({
64                        name: key,
65                        value: key
66                    });
67    
68                    if (response.length >= 25) {
69                        break;
70                    }
71                }
72            }
73    
74            await interaction.respond(response);
75      }      }
76    
77      async run(client: DiscordClient, message: Message | CommandInteraction, options: CommandOptions | InteractionOptions) {      async run(client: DiscordClient, message: Message | CommandInteraction, options: CommandOptions | InteractionOptions) {

Legend:
Removed from v.344  
changed lines
  Added in v.393

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26