Skip to content

Commit 62df2c9

Browse files
committed
Adding Give command
1 parent 20e59b6 commit 62df2c9

File tree

2 files changed

+103
-1
lines changed

2 files changed

+103
-1
lines changed

src/bot/commands/ai.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Logout from "./ai/logout";
1010
import Interogate from "./ai/interogate";
1111
import { ModelGenerationInputStableSamplers } from "../../internal_libs/aihorde";
1212
import Advanced from "./ai/advanced";
13+
import Give from "./ai/give";
1314

1415

1516
const commandData = new SlashCommandBuilder()
@@ -141,7 +142,27 @@ const commandData = new SlashCommandBuilder()
141142
"en-GB": "The image to interrogate",
142143
"en-US": "The image to interrogate"
143144
}))
144-
).addSubcommandGroup(subcommandGroup => subcommandGroup
145+
)
146+
.addSubcommand(subcommand => subcommand
147+
.setName("give")
148+
.setDescription("Donner des kudos à un utilisateur")
149+
.setDescriptionLocalizations({
150+
fr: "Donner des kudos à un utilisateur",
151+
"en-GB": "Give kudos to an user",
152+
"en-US": "Give kudos to an user"
153+
})
154+
.addUserOption(option => option.setName("user").setDescription("L'utilisateur").setRequired(true).setDescriptionLocalizations({
155+
fr: "L'utilisateur",
156+
"en-GB": "The user",
157+
"en-US": "The user"
158+
}))
159+
.addNumberOption(option => option.setName("amount").setDescription("Le nombre de kudos à donner").setRequired(false).setDescriptionLocalizations({
160+
fr: "Le nombre de kudos à donner",
161+
"en-GB": "The number of kudos to give",
162+
"en-US": "The number of kudos to give"
163+
}))
164+
)
165+
.addSubcommandGroup(subcommandGroup => subcommandGroup
145166
.setName("advanced")
146167
.setDescription("Commandes avancées de génération").addSubcommand(subcommand => subcommand
147168
.setName("imagine")
@@ -286,6 +307,8 @@ export class IaCommand extends CommandsBase {
286307
case "ask":
287308
await Ask(this, interaction);
288309
break;
310+
case "give":
311+
await Give(this, interaction);
289312
case "interogate":
290313
await Interogate(this, interaction);
291314
break;

src/bot/commands/ai/give.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { ActionRowBuilder, CommandInteraction, CommandInteractionOptionResolver, EmbedBuilder, MessageFlags, ModalBuilder, TextInputBuilder, TextInputStyle } from "discord.js";
2+
import CommandsBase from "../baseCommands";
3+
4+
export default async function Give(command: CommandsBase, interaction: CommandInteraction) {
5+
let i = await interaction.deferReply()
6+
let options = interaction.options;
7+
let userSelected = options.getUser("user", true);
8+
let amount = 1;
9+
if(options instanceof CommandInteractionOptionResolver) {
10+
amount = options.getNumber("amount") || 1;
11+
}
12+
i.edit({
13+
content: "Recherche en cours de l'utilisateur dans la base de donnée",
14+
});
15+
let giverUser = await command.client.database.users.findFirst({
16+
where: {
17+
id: interaction.user.id
18+
}
19+
});
20+
if (!giverUser) return i.edit({
21+
content: "Vous n'êtes pas enregistré" + `, vous devez vous enregistrer avec la commande </${interaction.commandName} login:${interaction.commandId}>`,
22+
});
23+
i.edit({
24+
content: "Recherche en cours de l'utilisateur dans l'API",
25+
});
26+
let token = command.client.decryptString(giverUser.horde_token);
27+
let ai = command.client.aiHorde;
28+
try {
29+
let user = await ai.findUser({
30+
token
31+
});
32+
if(user.kudos < amount) return i.edit({
33+
content: "Vous n'avez pas assez de kudos",
34+
});
35+
// find the other user
36+
let receiverUser = await command.client.database.users.findFirst({
37+
where: {
38+
id: userSelected.id
39+
}
40+
});
41+
if(!receiverUser) return i.edit({
42+
content: "L'utilisateur n'est pas enregistré",
43+
});
44+
try{
45+
let receiverToken = command.client.decryptString(receiverUser.horde_token);
46+
let receiver = await ai.findUser({
47+
token: receiverToken
48+
});
49+
// give kudos
50+
51+
ai.postKudosTransfer({
52+
username: receiver.username,
53+
amount
54+
},{
55+
token: token
56+
}).then(async (content) => {
57+
i.edit({
58+
content:`Vous avez donné ${content.transferred} kudos à <@${userSelected.id}> (${receiver.username})`
59+
});
60+
}).catch(async (err) => {
61+
i.edit({
62+
content: "Une erreur est survenue lors du transfert de kudos, réessayer",
63+
});
64+
});
65+
}catch(e){
66+
return i.edit({
67+
content: "L'utilisateur cible n'est pas enregistré",
68+
});
69+
}
70+
} catch (e) {
71+
return i.edit({
72+
content: "Le token est invalide vous devez vous reconnecter",
73+
});
74+
}
75+
}
76+
77+
function Capitalize(str: string) {
78+
return `**${str.charAt(0).toUpperCase() + str.slice(1)}**`
79+
}

0 commit comments

Comments
 (0)