forked from Galactic/galactic-bot
misc fixes
This commit is contained in:
parent
ad720f5fdb
commit
0c5841111c
@ -1,4 +1,4 @@
|
|||||||
const { Client, Collection, DataResolver } = require('discord.js');
|
const { Client, Collection, DataResolver, ActivityType } = require('discord.js');
|
||||||
const chalk = require('chalk');
|
const chalk = require('chalk');
|
||||||
const { inspect } = require('util');
|
const { inspect } = require('util');
|
||||||
|
|
||||||
@ -69,8 +69,6 @@ class DiscordClient extends Client {
|
|||||||
this.emit('rateLimit', ...args);
|
this.emit('rateLimit', ...args);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.ws.on('onmessage', (data) => console.log(data));
|
|
||||||
|
|
||||||
// this.once('ready', () => {
|
// this.once('ready', () => {
|
||||||
// this._setActivity();
|
// this._setActivity();
|
||||||
|
|
||||||
@ -206,16 +204,16 @@ class DiscordClient extends Client {
|
|||||||
const result = await this.shard.broadcastEval((client) => client.guilds.cache.size).catch(() => null);
|
const result = await this.shard.broadcastEval((client) => client.guilds.cache.size).catch(() => null);
|
||||||
if (!result) return;
|
if (!result) return;
|
||||||
const guildCount = result.reduce((p, v) => p+v, 0);
|
const guildCount = result.reduce((p, v) => p+v, 0);
|
||||||
this.user.setActivity(`${guildCount} servers`, { type: 'WATCHING' });
|
this.user.setActivity(`${guildCount} servers`, { type: ActivityType.Watching });
|
||||||
},
|
},
|
||||||
1: async () => {
|
1: async () => {
|
||||||
const result = await this.shard.broadcastEval((client) => client.users.cache.size).catch(() => null);
|
const result = await this.shard.broadcastEval((client) => client.users.cache.size).catch(() => null);
|
||||||
if (!result) return;
|
if (!result) return;
|
||||||
const userCount = result.reduce((p, v) => p+v, 0);
|
const userCount = result.reduce((p, v) => p+v, 0);
|
||||||
this.user.setActivity(`${userCount} users`, { type: 'LISTENING' });
|
this.user.setActivity(`${userCount} users`, { type: ActivityType.Listening });
|
||||||
},
|
},
|
||||||
2: async () => {
|
2: async () => {
|
||||||
this.user.setActivity("for /help", { type: 'LISTENING' });
|
this.user.setActivity("for /help", { type: ActivityType.Listening });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,10 +1,6 @@
|
|||||||
const { EmbedBuilder } = require("discord.js");
|
const { EmbedBuilder, ChannelType } = require("discord.js");
|
||||||
const { SlashCommand } = require("../../../interfaces");
|
const { SlashCommand } = require("../../../interfaces");
|
||||||
|
|
||||||
const Tiers = {
|
|
||||||
NONE: 0
|
|
||||||
};
|
|
||||||
|
|
||||||
class GuildCommand extends SlashCommand {
|
class GuildCommand extends SlashCommand {
|
||||||
|
|
||||||
constructor(client) {
|
constructor(client) {
|
||||||
@ -38,13 +34,13 @@ class GuildCommand extends SlashCommand {
|
|||||||
|
|
||||||
|
|
||||||
for (const channel of guild.channels.cache.values()) {
|
for (const channel of guild.channels.cache.values()) {
|
||||||
if (channel.type === 'GUILD_VOICE') vc++;
|
if (channel.type === ChannelType.GuildVoice) vc++;
|
||||||
if (channel.type === 'GUILD_TEXT') tc++;
|
if (channel.type === ChannelType.GuildText) tc++;
|
||||||
if (channel.type === 'GUILD_CATEGORY') cat++;
|
if (channel.type === ChannelType.GuildCategory) cat++;
|
||||||
if (channel.type === 'GUILD_NEWS') news++;
|
if (channel.type === ChannelType.GuildNews) news++;
|
||||||
if (channel.type === 'GUILD_NEWS_THREAD') newsThread++;
|
if (channel.type === ChannelType.GuildNewsThread) newsThread++;
|
||||||
if (channel.type === 'GUILD_PUBLIC_THREAD') publicThread++;
|
if (channel.type === ChannelType.GuildPublicThread) publicThread++;
|
||||||
if (channel.type === 'GUILD_PRIVATE_THREAD') privateThread++;
|
if (channel.type === ChannelType.GuildPrivateThread) privateThread++;
|
||||||
totalChannels++;
|
totalChannels++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +87,7 @@ class GuildCommand extends SlashCommand {
|
|||||||
roleCount: guild.roles.cache.size,
|
roleCount: guild.roles.cache.size,
|
||||||
emojiCount: guild.emojis.cache.filter((e) => !e.animated).size,
|
emojiCount: guild.emojis.cache.filter((e) => !e.animated).size,
|
||||||
gifEmojiCount: guild.emojis.cache.filter((e) => e.animated).size,
|
gifEmojiCount: guild.emojis.cache.filter((e) => e.animated).size,
|
||||||
emojiTotal: 50 + 50 * Tiers[guild.premiumTier]
|
emojiTotal: 50 + 50 * guild.premiumTier
|
||||||
}),
|
}),
|
||||||
inline: true
|
inline: true
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
const { Infraction } = require('../../interfaces/');
|
const { Infraction } = require('../../interfaces/');
|
||||||
const { Collection } = require('@discordjs/collection');
|
const { Collection } = require('@discordjs/collection');
|
||||||
|
const { MessageType } = require('discord.js');
|
||||||
|
|
||||||
const Arguments = ['users', 'bots', 'humans', 'contains', 'startswith', 'endswith', 'emojis', 'reactions', 'text', 'invites', 'links', 'emojis', 'reactions', 'images', 'attachments'];
|
const Arguments = ['users', 'bots', 'humans', 'contains', 'startswith', 'endswith', 'emojis', 'reactions', 'text', 'invites', 'links', 'emojis', 'reactions', 'images', 'attachments'];
|
||||||
|
|
||||||
@ -43,7 +44,7 @@ class PruneInfraction extends Infraction {
|
|||||||
const hasOld = messages.some((m) => m.createdTimestamp >= Date.now() + 1209600000); //I hope Node.js can handle these large of numbers.. e_e (2 weeks)
|
const hasOld = messages.some((m) => m.createdTimestamp >= Date.now() + 1209600000); //I hope Node.js can handle these large of numbers.. e_e (2 weeks)
|
||||||
const hasUndeletable = messages.some((m) => m.deletable);
|
const hasUndeletable = messages.some((m) => m.deletable);
|
||||||
|
|
||||||
messages = messages.filter((m) => m.deletable && m.type !== 'APPLICATION_COMMAND');
|
messages = messages.filter((m) => m.deletable && m.type !== MessageType.ChatInputCommand);
|
||||||
if (messages.size === 0) return this._fail('C_PRUNE_NOTDELETABLE');
|
if (messages.size === 0) return this._fail('C_PRUNE_NOTDELETABLE');
|
||||||
|
|
||||||
const filtered = await this.filterMessages(messages);
|
const filtered = await this.filterMessages(messages);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
const { EmbedBuilder, Message, ChannelType, ComponentType } = require('discord.js');
|
const { EmbedBuilder, Message, ChannelType, ComponentType, ButtonStyle } = require('discord.js');
|
||||||
const { Util } = require('../../../utilities');
|
const { Util } = require('../../../utilities');
|
||||||
const { InvokerWrapper, MessageWrapper } = require('../../client/wrappers');
|
const { InvokerWrapper, MessageWrapper } = require('../../client/wrappers');
|
||||||
const { Observer, CommandError } = require('../../interfaces/');
|
const { Observer, CommandError } = require('../../interfaces/');
|
||||||
@ -482,7 +482,7 @@ class CommandHandler extends Observer {
|
|||||||
{
|
{
|
||||||
label: 'Support',
|
label: 'Support',
|
||||||
type: ComponentType.Button,
|
type: ComponentType.Button,
|
||||||
style: 'LINK',
|
style: ButtonStyle.Link,
|
||||||
url: this.client._options.discord.invite
|
url: this.client._options.discord.invite
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -124,7 +124,7 @@ class MessageLog extends Setting {
|
|||||||
if (!values.length) return { error: true, index: 'RESOLVE_FAIL', params: { type: list === 'bypass' ? 'roles' : 'channels' } };
|
if (!values.length) return { error: true, index: 'RESOLVE_FAIL', params: { type: list === 'bypass' ? 'roles' : 'channels' } };
|
||||||
const { modified } = this[method](setting[list], values.map((o) => o.id));
|
const { modified } = this[method](setting[list], values.map((o) => o.id));
|
||||||
if(modified.length) {
|
if(modified.length) {
|
||||||
index = `SETTING_SUCCESS_${list.toUpperCase()}`;
|
index = `SETTING_SUCCESS_${method.toUpperCase()}`;
|
||||||
langParams.updated = list;
|
langParams.updated = list;
|
||||||
langParams.modified = modified.map((o) => o.name).join('__, __');
|
langParams.modified = modified.map((o) => o.name).join('__, __');
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,10 @@ class InviteFilterSetting extends FilterSetting {
|
|||||||
return { id: word };
|
return { id: word };
|
||||||
}); // TODO Figure out guild ID validation here
|
}); // TODO Figure out guild ID validation here
|
||||||
|
|
||||||
if (!params.length && ![silent, enabled].some((o) => o !== undefined)) return { error: true, index: 'RESOLVE_FAIL', params: { type: list === 'bypass' ? 'roles' : 'channels' } };
|
if (!params.length && ![silent, enabled].some((o) => o !== undefined))
|
||||||
|
// eslint-disable-next-line no-nested-ternary
|
||||||
|
return { error: true, index: 'RESOLVE_FAIL', params: { type: ['bypass', 'ignore'].includes(list) ? list === 'bypass' ? 'roles' : 'channels' : 'guilds' } };
|
||||||
|
|
||||||
const { modified } = this[method](setting[list], params.map((o) => o.id));
|
const { modified } = this[method](setting[list], params.map((o) => o.id));
|
||||||
if (modified.length) {
|
if (modified.length) {
|
||||||
index = `SETTING_SUCCESS_${method.toUpperCase()}`;
|
index = `SETTING_SUCCESS_${method.toUpperCase()}`;
|
||||||
|
@ -143,8 +143,8 @@ class LinkFilterSetting extends FilterSetting {
|
|||||||
const { modified } = this[method](setting[list], params.map((o) => o.id || o));
|
const { modified } = this[method](setting[list], params.map((o) => o.id || o));
|
||||||
if (modified.length) {
|
if (modified.length) {
|
||||||
index = `SETTING_SUCCESS_${method.toUpperCase()}`;
|
index = `SETTING_SUCCESS_${method.toUpperCase()}`;
|
||||||
langParams.list = list;
|
langParams.updated = list;
|
||||||
langParams.modified = modified.filter((o) => modified.includes(o.id || o)).map((o) => o.name || o).join('__, __');
|
langParams.modified = params.filter((o) => modified.includes(o.id || o)).map((o) => o.name || o).join('__, __');
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ class Autorole extends Setting {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'GENERAL_ROLES',
|
name: 'GENERAL_ROLES',
|
||||||
value: setting.roles.map((role) => `<@&${role}>`).join(' ')
|
value: setting.roles.map((role) => `<@&${role}>`).join(' ') || '**N/A**'
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ class FilterSetting extends Setting {
|
|||||||
async _action(interaction, method, actions, { _wordWatcher } = {}) {
|
async _action(interaction, method, actions, { _wordWatcher } = {}) {
|
||||||
|
|
||||||
if (!['add', 'remove', 'edit', 'list', 'reset'].includes(method))
|
if (!['add', 'remove', 'edit', 'list', 'reset'].includes(method))
|
||||||
return { error: true, message: interaction.format('ERR_INVALID_METHOD', { method }) };
|
return { error: true, content: interaction.format('ERR_INVALID_METHOD', { method }) };
|
||||||
|
|
||||||
this.client.logger.debug(`_action method:${method}`);
|
this.client.logger.debug(`_action method:${method}`);
|
||||||
let result = null,
|
let result = null,
|
||||||
@ -17,7 +17,7 @@ class FilterSetting extends Setting {
|
|||||||
if (method === 'add') {
|
if (method === 'add') {
|
||||||
if (actions.length >= 5 && _wordWatcher) return {
|
if (actions.length >= 5 && _wordWatcher) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_WORDWATCHER_ACTION_LIMIT')
|
content: interaction.format('SETTING_WORDWATCHER_ACTION_LIMIT')
|
||||||
};
|
};
|
||||||
result = await this._createAction(interaction, actions, { _wordWatcher });
|
result = await this._createAction(interaction, actions, { _wordWatcher });
|
||||||
index = 'SETTING_FILTER_ACTION_ADD';
|
index = 'SETTING_FILTER_ACTION_ADD';
|
||||||
@ -76,7 +76,7 @@ class FilterSetting extends Setting {
|
|||||||
|| !validInfractions.includes(infType))
|
|| !validInfractions.includes(infType))
|
||||||
&& !['del', 'delete'].includes(action)) return {
|
&& !['del', 'delete'].includes(action)) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_INVALID_INFRACTION', { valid: validInfractions.join('`, `') })
|
content: interaction.format('SETTING_FILTER_INVALID_INFRACTION', { valid: validInfractions.join('`, `') })
|
||||||
};
|
};
|
||||||
if (!infType && ['del', 'delete'].includes(action)) infType = 'DELETE';
|
if (!infType && ['del', 'delete'].includes(action)) infType = 'DELETE';
|
||||||
actionObject.type = infType;
|
actionObject.type = infType;
|
||||||
@ -192,7 +192,7 @@ class FilterSetting extends Setting {
|
|||||||
|
|
||||||
async _removeAction(interaction, actions) {
|
async _removeAction(interaction, actions) {
|
||||||
|
|
||||||
if (!actions.length) return { error: true, message: interaction.format('SETTING_FILTER_ACTION_REMOVE_NO_ACTIONS') };
|
if (!actions.length) return { error: true, content: interaction.format('SETTING_FILTER_ACTION_REMOVE_NO_ACTIONS') };
|
||||||
const embed = this._createActionEmbed(interaction, actions);
|
const embed = this._createActionEmbed(interaction, actions);
|
||||||
|
|
||||||
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_REMOVE_START', time: 60, embed });
|
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_REMOVE_START', time: 60, embed });
|
||||||
@ -200,12 +200,12 @@ class FilterSetting extends Setting {
|
|||||||
|
|
||||||
if (['cancel', 'abort', 'exit'].includes(content)) return {
|
if (['cancel', 'abort', 'exit'].includes(content)) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('ERR_CANCEL')
|
content: interaction.format('ERR_CANCEL')
|
||||||
};
|
};
|
||||||
|
|
||||||
const index = parseInt(content);
|
const index = parseInt(content);
|
||||||
if (isNaN(index)) return { error: true, message: interaction.format('ERR_NAN') };
|
if (isNaN(index)) return { error: true, content: interaction.format('ERR_NAN') };
|
||||||
if (index < 0 || index > actions.length - 1) return { error: true, message: interaction.format('ERR_INDEX_OUT_OF_BOUNDS') };
|
if (index < 0 || index > actions.length - 1) return { error: true, content: interaction.format('ERR_INDEX_OUT_OF_BOUNDS') };
|
||||||
|
|
||||||
return actions.splice(index, 1)[0];
|
return actions.splice(index, 1)[0];
|
||||||
|
|
||||||
@ -218,8 +218,8 @@ class FilterSetting extends Setting {
|
|||||||
if (content.error) return content;
|
if (content.error) return content;
|
||||||
|
|
||||||
const index = parseInt(content);
|
const index = parseInt(content);
|
||||||
if (isNaN(index)) return { error: true, message: interaction.format('ERR_NAN') };
|
if (isNaN(index)) return { error: true, content: interaction.format('ERR_NAN') };
|
||||||
if (index < 0 || index > actions.length - 1) return { error: true, message: interaction.format('ERR_INDEX_OUT_OF_BOUNDS') };
|
if (index < 0 || index > actions.length - 1) return { error: true, content: interaction.format('ERR_INDEX_OUT_OF_BOUNDS') };
|
||||||
|
|
||||||
const action = actions[index];
|
const action = actions[index];
|
||||||
|
|
||||||
@ -234,7 +234,7 @@ class FilterSetting extends Setting {
|
|||||||
|
|
||||||
if (!properties.includes(prop)) return {
|
if (!properties.includes(prop)) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_BADPROP')
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_BADPROP')
|
||||||
};
|
};
|
||||||
|
|
||||||
if (prop === 'trigger') return this._editTrigger(interaction, actions, action);
|
if (prop === 'trigger') return this._editTrigger(interaction, actions, action);
|
||||||
@ -254,7 +254,7 @@ class FilterSetting extends Setting {
|
|||||||
|
|
||||||
if (!interaction.guild._settings.modpoints?.enabled) return {
|
if (!interaction.guild._settings.modpoints?.enabled) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_POINTS_DISABLED')
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_POINTS_DISABLED')
|
||||||
};
|
};
|
||||||
|
|
||||||
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_EDIT_EXPIRATION', time: 60 });
|
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_EDIT_EXPIRATION', time: 60 });
|
||||||
@ -277,7 +277,7 @@ class FilterSetting extends Setting {
|
|||||||
const bool = resolver.resolveBoolean(content);
|
const bool = resolver.resolveBoolean(content);
|
||||||
if (bool === null) return {
|
if (bool === null) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_BOOL_INVALID')
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_BOOL_INVALID')
|
||||||
};
|
};
|
||||||
|
|
||||||
action[prop] = bool;
|
action[prop] = bool;
|
||||||
@ -289,7 +289,7 @@ class FilterSetting extends Setting {
|
|||||||
|
|
||||||
if (!interaction.guild._settings.modpoints?.enabled) return {
|
if (!interaction.guild._settings.modpoints?.enabled) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_POINTS_DISABLED')
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_POINTS_DISABLED')
|
||||||
};
|
};
|
||||||
|
|
||||||
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_EDIT_POINTS', time: 60 });
|
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_EDIT_POINTS', time: 60 });
|
||||||
@ -298,7 +298,7 @@ class FilterSetting extends Setting {
|
|||||||
const reg = /(\d{1,3})\s?(points?|pts?|p)?/iu;
|
const reg = /(\d{1,3})\s?(points?|pts?|p)?/iu;
|
||||||
if (!reg.test(content)) return {
|
if (!reg.test(content)) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_POINTS_FAIL')
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_POINTS_FAIL')
|
||||||
};
|
};
|
||||||
|
|
||||||
const match = content.match(reg);
|
const match = content.match(reg);
|
||||||
@ -324,7 +324,7 @@ class FilterSetting extends Setting {
|
|||||||
|
|
||||||
if (!validInfractions.includes(content.toUpperCase())) return {
|
if (!validInfractions.includes(content.toUpperCase())) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_INVALID_TYPE')
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_INVALID_TYPE')
|
||||||
};
|
};
|
||||||
|
|
||||||
action.type = content.toUpperCase();
|
action.type = content.toUpperCase();
|
||||||
@ -339,7 +339,7 @@ class FilterSetting extends Setting {
|
|||||||
|
|
||||||
if (!['MUTE', 'BAN'].includes(action.type)) return {
|
if (!['MUTE', 'BAN'].includes(action.type)) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_DURATION_ERR', { action: action.type })
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_DURATION_ERR', { action: action.type })
|
||||||
};
|
};
|
||||||
|
|
||||||
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_EDIT_DURATION', time: 120 });
|
const content = await this._prompt(interaction, { index: 'SETTING_FILTER_ACTION_EDIT_DURATION', time: 120 });
|
||||||
@ -351,7 +351,7 @@ class FilterSetting extends Setting {
|
|||||||
const time = resolver.resolveTime(content);
|
const time = resolver.resolveTime(content);
|
||||||
if (!time) return {
|
if (!time) return {
|
||||||
error: true,
|
error: true,
|
||||||
message: interaction.format('SETTING_FILTER_ACTION_EDIT_DURATION_ERR2')
|
content: interaction.format('SETTING_FILTER_ACTION_EDIT_DURATION_ERR2')
|
||||||
};
|
};
|
||||||
action.duration = time;
|
action.duration = time;
|
||||||
}
|
}
|
||||||
|
@ -442,7 +442,7 @@ class Infraction {
|
|||||||
|
|
||||||
async unresolve(staff, reason) {
|
async unresolve(staff, reason) {
|
||||||
this.changes.push({
|
this.changes.push({
|
||||||
type: 'RESOLVE',
|
type: 'UNRESOLVE',
|
||||||
staff: staff.id,
|
staff: staff.id,
|
||||||
timestamp: Date.now(),
|
timestamp: Date.now(),
|
||||||
reason
|
reason
|
||||||
|
@ -171,15 +171,16 @@ class SettingsCommand extends SlashCommand {
|
|||||||
const embed = setting.usageEmbed(guild, null, this.subcommand(subcommand.name));
|
const embed = setting.usageEmbed(guild, null, this.subcommand(subcommand.name));
|
||||||
const dataFields = await setting.fields(guild);
|
const dataFields = await setting.fields(guild);
|
||||||
// eslint-disable-next-line no-return-assign
|
// eslint-disable-next-line no-return-assign
|
||||||
dataFields.forEach((field) => {
|
dataFields.forEach((field, index) => {
|
||||||
|
if (!field.name.length) this.client.logger.warn(`${setting.name} is missing name for a field, index: ${index}`, { broadcast: true });
|
||||||
|
if (!field.value.length) this.client.logger.warn(`${setting.name} is missing value for a field, index: ${index}`, { broadcast: true });
|
||||||
if(field.name.length > 1) field.name = guild.format(field.name);
|
if(field.name.length > 1) field.name = guild.format(field.name);
|
||||||
});
|
});
|
||||||
|
|
||||||
embed.addFields(dataFields);
|
try {
|
||||||
|
embed.addFields(...dataFields);
|
||||||
|
}catch(err) { /* */ }
|
||||||
await invoker.reply({ embeds: [embed] });
|
await invoker.reply({ embeds: [embed] });
|
||||||
// .catch((error) => {
|
|
||||||
// this.client.logger.error(`${error.stack || error}\nError context: ${JSON.stringify(embed)}`);
|
|
||||||
// });
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user