Merge pull request #193 from VermiumSifell/177-typescript
Typescript fixes
This commit is contained in:
commit
eb1aa6c5ff
10 changed files with 212 additions and 219 deletions
|
@ -40,6 +40,7 @@
|
||||||
"node-schedule": "^2.1.0",
|
"node-schedule": "^2.1.0",
|
||||||
"pino": "^7.0.0-rc.9",
|
"pino": "^7.0.0-rc.9",
|
||||||
"quick.db": "^7.1.3",
|
"quick.db": "^7.1.3",
|
||||||
|
"typescript": "^4.6.3",
|
||||||
"uuid": "^8.3.2"
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
import i18next from 'i18next';
|
|
||||||
import config from '../../../../config.json';
|
|
||||||
import logger from '../../../handlers/logger';
|
|
||||||
import users from '../../../helpers/database/models/userSchema';
|
|
||||||
import { CommandInteraction } from 'discord.js';
|
|
||||||
export default async (interaction: CommandInteraction) => {
|
|
||||||
try {
|
|
||||||
// Destructure member
|
|
||||||
const { member } = await interaction;
|
|
||||||
|
|
||||||
// Get options
|
|
||||||
const target = await interaction.options.getUser('target');
|
|
||||||
|
|
||||||
// Get discord user object
|
|
||||||
const discordUser = await interaction.client.users.fetch(
|
|
||||||
`${target ? target.id : interaction?.user?.id}`
|
|
||||||
);
|
|
||||||
|
|
||||||
// Get user object
|
|
||||||
const userDB = await users.findOne({
|
|
||||||
userId: await discordUser?.id,
|
|
||||||
guildId: interaction?.guild?.id,
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create embed object
|
|
||||||
const embed = {
|
|
||||||
author: {
|
|
||||||
name: `${await discordUser.username}#${await discordUser.discriminator}`,
|
|
||||||
icon_url: await discordUser.displayAvatarURL(),
|
|
||||||
},
|
|
||||||
color: config.colors.success as any,
|
|
||||||
fields: [
|
|
||||||
{
|
|
||||||
name: `:dollar: Credits`,
|
|
||||||
value: `${userDB.credits || 'Not found'}`,
|
|
||||||
inline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: `:squeeze_bottle: Level`,
|
|
||||||
value: `${userDB.level || 'Not found'}`,
|
|
||||||
inline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: `:squeeze_bottle: Points`,
|
|
||||||
value: `${userDB.points || 'Not found'}`,
|
|
||||||
inline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: `:loudspeaker: Reputation`,
|
|
||||||
value: `${userDB.reputation || 'Not found'}`,
|
|
||||||
inline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: `:rainbow_flag: Language`,
|
|
||||||
value: `${userDB.language || 'Not found'}`,
|
|
||||||
inline: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
timestamp: new Date(),
|
|
||||||
footer: { iconURL: config.footer.icon, text: config.footer.text },
|
|
||||||
};
|
|
||||||
|
|
||||||
// Send interaction reply
|
|
||||||
return await interaction.editReply({ embeds: [embed] });
|
|
||||||
} catch (e) {
|
|
||||||
// Send debug message
|
|
||||||
await logger.error(e);
|
|
||||||
}
|
|
||||||
};
|
|
|
@ -1,10 +1,15 @@
|
||||||
|
// Dependencies
|
||||||
import { SlashCommandBuilder } from '@discordjs/builders';
|
import { SlashCommandBuilder } from '@discordjs/builders';
|
||||||
import view from './addons/view';
|
|
||||||
import { CommandInteraction } from 'discord.js';
|
import { CommandInteraction } from 'discord.js';
|
||||||
|
|
||||||
|
// Modules
|
||||||
|
import view from './modules/view';
|
||||||
|
|
||||||
|
// Function
|
||||||
export default {
|
export default {
|
||||||
data: new SlashCommandBuilder()
|
data: new SlashCommandBuilder()
|
||||||
.setName('profile')
|
.setName('profile')
|
||||||
.setDescription('Your profile.')
|
.setDescription('Check a profile.')
|
||||||
.addSubcommand((subcommand) =>
|
.addSubcommand((subcommand) =>
|
||||||
subcommand
|
subcommand
|
||||||
.setName('view')
|
.setName('view')
|
||||||
|
@ -16,9 +21,9 @@ export default {
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
async execute(interaction: CommandInteraction) {
|
async execute(interaction: CommandInteraction) {
|
||||||
// If subcommand is view
|
// Module - View
|
||||||
if (interaction.options.getSubcommand() === 'view') {
|
if (interaction.options.getSubcommand() === 'view') {
|
||||||
// Execute view addon
|
// Execute Module - View
|
||||||
await view(interaction);
|
await view(interaction);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
64
src/commands/profile/modules/view.ts
Normal file
64
src/commands/profile/modules/view.ts
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
import i18next from 'i18next';
|
||||||
|
import config from '../../../../config.json';
|
||||||
|
import logger from '../../../handlers/logger';
|
||||||
|
import users from '../../../helpers/database/models/userSchema';
|
||||||
|
import { CommandInteraction } from 'discord.js';
|
||||||
|
export default async (interaction: CommandInteraction) => {
|
||||||
|
// Destructure
|
||||||
|
const { client, options, user, guild } = interaction;
|
||||||
|
|
||||||
|
// Target information
|
||||||
|
const target = options?.getUser('target');
|
||||||
|
|
||||||
|
// Discord User Information
|
||||||
|
const discordUser = await client.users.fetch(
|
||||||
|
`${target ? target?.id : user?.id}`
|
||||||
|
);
|
||||||
|
|
||||||
|
// User Information
|
||||||
|
const userObj = await users.findOne({
|
||||||
|
userId: discordUser?.id,
|
||||||
|
guildId: guild?.id,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Embed object
|
||||||
|
const embed = {
|
||||||
|
author: {
|
||||||
|
name: `${discordUser.username}#${discordUser.discriminator}`,
|
||||||
|
icon_url: discordUser.displayAvatarURL(),
|
||||||
|
},
|
||||||
|
color: config.colors.success as any,
|
||||||
|
fields: [
|
||||||
|
{
|
||||||
|
name: `:dollar: Credits`,
|
||||||
|
value: `${userObj.credits || 'Not found'}`,
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `:squeeze_bottle: Level`,
|
||||||
|
value: `${userObj.level || 'Not found'}`,
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `:squeeze_bottle: Points`,
|
||||||
|
value: `${userObj.points || 'Not found'}`,
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `:loudspeaker: Reputation`,
|
||||||
|
value: `${userObj.reputation || 'Not found'}`,
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: `:rainbow_flag: Language`,
|
||||||
|
value: `${userObj.language || 'Not found'}`,
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
timestamp: new Date(),
|
||||||
|
footer: { iconURL: config.footer.icon, text: config.footer.text },
|
||||||
|
};
|
||||||
|
|
||||||
|
// Send interaction reply
|
||||||
|
return await interaction.editReply({ embeds: [embed] });
|
||||||
|
};
|
|
@ -1,16 +1,19 @@
|
||||||
|
// Dependencies
|
||||||
import { SlashCommandBuilder } from '@discordjs/builders';
|
import { SlashCommandBuilder } from '@discordjs/builders';
|
||||||
import { Permissions, CommandInteraction } from 'discord.js';
|
import { CommandInteraction } from 'discord.js';
|
||||||
import logger from '../../handlers/logger';
|
|
||||||
import give from './addons/give';
|
|
||||||
|
|
||||||
|
// Modules
|
||||||
|
import give from './modules/give';
|
||||||
|
|
||||||
|
// Function
|
||||||
export default {
|
export default {
|
||||||
data: new SlashCommandBuilder()
|
data: new SlashCommandBuilder()
|
||||||
.setName('reputation')
|
.setName('reputation')
|
||||||
.setDescription('Manage reputation.')
|
.setDescription('Give reputation.')
|
||||||
.addSubcommand((subcommand) =>
|
.addSubcommand((subcommand) =>
|
||||||
subcommand
|
subcommand
|
||||||
.setName('give')
|
.setName('give')
|
||||||
.setDescription('Give reputation for a user')
|
.setDescription('Give reputation to a user')
|
||||||
.addUserOption((option) =>
|
.addUserOption((option) =>
|
||||||
option
|
option
|
||||||
.setName('target')
|
.setName('target')
|
||||||
|
@ -27,22 +30,13 @@ export default {
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
async execute(interaction: CommandInteraction) {
|
async execute(interaction: CommandInteraction) {
|
||||||
// Destructure member
|
// Destructure
|
||||||
const { member } = interaction;
|
const { options } = interaction;
|
||||||
|
|
||||||
// If subcommand is give
|
// Module - Give
|
||||||
if (interaction.options.getSubcommand() === 'give') {
|
if (options.getSubcommand() === 'give') {
|
||||||
// Execute give addon
|
// Execute Module - Give
|
||||||
await give(interaction);
|
await give(interaction);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send debug message
|
|
||||||
await logger.debug(
|
|
||||||
`Guild: ${interaction?.guild?.id} User: ${
|
|
||||||
interaction?.user?.id
|
|
||||||
} executed /${
|
|
||||||
interaction.commandName
|
|
||||||
} ${interaction.options.getSubcommand()}`
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,31 +6,33 @@ import users from '../../../helpers/database/models/userSchema';
|
||||||
import timeouts from '../../../helpers/database/models/timeoutSchema';
|
import timeouts from '../../../helpers/database/models/timeoutSchema';
|
||||||
|
|
||||||
export default async (interaction: CommandInteraction) => {
|
export default async (interaction: CommandInteraction) => {
|
||||||
// Destructure member
|
// Destructure
|
||||||
const { member } = interaction;
|
const { options, user, guild } = interaction;
|
||||||
|
|
||||||
// Get options
|
// Target information
|
||||||
const target = await interaction.options.getUser('target');
|
const target = options.getUser('target');
|
||||||
const type = await interaction.options.getString('type');
|
|
||||||
|
|
||||||
// Get user object
|
// Type information
|
||||||
const userDB = await users.findOne({
|
const type = options.getString('type');
|
||||||
userId: interaction?.user?.id,
|
|
||||||
guildId: interaction?.guild?.id,
|
// User information
|
||||||
|
const userObj = await users.findOne({
|
||||||
|
userId: user?.id,
|
||||||
|
guildId: guild?.id,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Check if user has a timeout
|
// Check if user has a timeout
|
||||||
const isTimeout = await timeouts.findOne({
|
const isTimeout = await timeouts.findOne({
|
||||||
guildId: interaction?.guild?.id,
|
guildId: guild?.id,
|
||||||
userId: interaction?.user?.id,
|
userId: user?.id,
|
||||||
timeoutId: 2,
|
timeoutId: 2,
|
||||||
});
|
});
|
||||||
|
|
||||||
// If user is not on timeout
|
// If user is not on timeout
|
||||||
if (!isTimeout) {
|
if (!isTimeout) {
|
||||||
// Do not allow self reputation
|
// Do not allow self reputation
|
||||||
if (target?.id === interaction?.user?.id) {
|
if (target?.id === user?.id) {
|
||||||
// Create embed object
|
// Embed object
|
||||||
const embed = {
|
const embed = {
|
||||||
title: ':loudspeaker: Reputation - Give',
|
title: ':loudspeaker: Reputation - Give',
|
||||||
description: 'You can not repute yourself.',
|
description: 'You can not repute yourself.',
|
||||||
|
@ -39,23 +41,23 @@ export default async (interaction: CommandInteraction) => {
|
||||||
footer: { iconURL: config.footer.icon, text: config.footer.text },
|
footer: { iconURL: config.footer.icon, text: config.footer.text },
|
||||||
};
|
};
|
||||||
|
|
||||||
// Send interaction reply
|
// Return interaction reply
|
||||||
return interaction.editReply({ embeds: [embed] });
|
return interaction.editReply({ embeds: [embed] });
|
||||||
}
|
}
|
||||||
|
|
||||||
// If type is positive
|
// If type is positive
|
||||||
if (type === 'positive') {
|
if (type === 'positive') {
|
||||||
userDB.reputation += 1;
|
userObj.reputation += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If type is negative
|
// If type is negative
|
||||||
if (type === 'negative') {
|
if (type === 'negative') {
|
||||||
userDB.reputation -= 1;
|
userObj.reputation -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save user
|
// Save user
|
||||||
await userDB.save().then(async () => {
|
await userObj.save().then(async () => {
|
||||||
// Create embed object
|
// Embed object
|
||||||
const embed = {
|
const embed = {
|
||||||
title: ':loudspeaker: Reputation - Give',
|
title: ':loudspeaker: Reputation - Give',
|
||||||
description: `You have given ${target} a ${type} reputation!`,
|
description: `You have given ${target} a ${type} reputation!`,
|
||||||
|
@ -67,33 +69,31 @@ export default async (interaction: CommandInteraction) => {
|
||||||
// Send interaction reply
|
// Send interaction reply
|
||||||
await interaction.editReply({ embeds: [embed] });
|
await interaction.editReply({ embeds: [embed] });
|
||||||
|
|
||||||
// Send debug message
|
// Log debug message
|
||||||
await logger.debug(
|
logger.debug(
|
||||||
`Guild: ${interaction?.guild?.id} User: ${interaction?.user?.id} has given ${target?.id} a ${type} reputation.`
|
`Guild: ${guild?.id} User: ${user?.id} has given ${target?.id} a ${type} reputation.`
|
||||||
);
|
);
|
||||||
|
|
||||||
// Create a timeout for the user
|
// Create a timeout for the user
|
||||||
await timeouts.create({
|
await timeouts.create({
|
||||||
guildId: interaction?.guild?.id,
|
guildId: guild?.id,
|
||||||
userId: interaction?.user?.id,
|
userId: user?.id,
|
||||||
timeoutId: 2,
|
timeoutId: 2,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
// send debug message
|
// send debug message
|
||||||
await logger.debug(
|
logger.debug(
|
||||||
`Guild: ${interaction?.guild?.id} User: ${
|
`Guild: ${guild?.id} User: ${user?.id} has not repute within last ${
|
||||||
interaction?.user?.id
|
|
||||||
} has not repute within last ${
|
|
||||||
config.reputation.timeout / 1000
|
config.reputation.timeout / 1000
|
||||||
} seconds, reputation can be given`
|
} seconds, reputation can be given`
|
||||||
);
|
);
|
||||||
|
|
||||||
// When timeout is out, remove it from the database
|
// When timeout is out, remove it from the database
|
||||||
await timeouts.deleteOne({
|
await timeouts.deleteOne({
|
||||||
guildId: interaction?.guild?.id,
|
guildId: guild?.id,
|
||||||
userId: interaction?.user?.id,
|
userId: user?.id,
|
||||||
timeoutId: 2,
|
timeoutId: 2,
|
||||||
});
|
});
|
||||||
}, config.reputation.timeout);
|
}, config.reputation.timeout);
|
||||||
|
@ -112,11 +112,9 @@ export default async (interaction: CommandInteraction) => {
|
||||||
// Send interaction reply
|
// Send interaction reply
|
||||||
await interaction.editReply({ embeds: [embed] });
|
await interaction.editReply({ embeds: [embed] });
|
||||||
|
|
||||||
// Send debug message
|
// Log debug message
|
||||||
await logger.debug(
|
logger.debug(
|
||||||
`Guild: ${interaction?.guild?.id} User: ${
|
`Guild: ${guild?.id} User: ${user?.id} has repute within last ${
|
||||||
interaction?.user?.id
|
|
||||||
} has repute within last ${
|
|
||||||
config.reputation.timeout / 1000
|
config.reputation.timeout / 1000
|
||||||
} seconds, no reputation can be given`
|
} seconds, no reputation can be given`
|
||||||
);
|
);
|
|
@ -23,7 +23,7 @@ export default {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Defer reply
|
// Defer reply
|
||||||
await interaction.deferReply();
|
await interaction.deferReply({ ephemeral: true });
|
||||||
|
|
||||||
// Execute command
|
// Execute command
|
||||||
await command.execute(interaction);
|
await command.execute(interaction);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import database from "./database.ts';
|
import database from './database';
|
||||||
import deployCommands from './deployCommands';
|
import deployCommands from './deployCommands';
|
||||||
import dbGuildFix from './dbGuildFix';
|
import dbGuildFix from './dbGuildFix';
|
||||||
import dbMemberFix from './dbMemberFix';
|
import dbMemberFix from './dbMemberFix';
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Dependencies
|
// Dependencies
|
||||||
import { Client, Intents } from 'discord.js'; // discord.js
|
import { Client, Intents } from 'discord.js'; // discord.js
|
||||||
|
|
||||||
import database from './helpers/database/index';
|
import database from './helpers/database';
|
||||||
import events from './handlers/events';
|
import events from './handlers/events';
|
||||||
import commands from './handlers/commands';
|
import commands from './handlers/commands';
|
||||||
import locale from './handlers/locale';
|
import locale from './handlers/locale';
|
||||||
|
|
Loading…
Add table
Reference in a new issue