-
Notifications
You must be signed in to change notification settings - Fork 0
/
film.ts
117 lines (83 loc) · 2.91 KB
/
film.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import { Client, ClientUser, CommandInteraction } from "discord.js";
import axios from 'axios';
import { v4 as uuidv4} from 'uuid';
import Films from "../Models/DBfilms";
import Users from "../Models/User";
import UserFilm from "../Models/UserFilm";
import { UUIDV4 } from "sequelize";
///https://www.omdbapi.com/
interface infoFilm {
title: string;
year: string;
director: string;
plot: string;
}
// Fonction pour récupérer les informations d'un film en utilisant l'API OMDb
async function getMovieInfo(query: string): Promise<infoFilm | string> {
try {
if(!process.env.API_FILM){
return "Clef de l'API manquante";
}
const response = await axios.get(`http://www.omdbapi.com/?t=${encodeURIComponent(query)}&apikey=${process.env.API_FILM}`);
const movie = response.data;
const infoFilm: infoFilm = {
title:movie.Title,
year: movie.Year,
director: movie.Director || 'Réalisateur inconnu',
plot: movie.Plot || 'Pas de description disponible',
};
if (infoFilm.title==undefined){
return 'Aucune information trouvée pour ce film.';
}
return infoFilm;
} catch (error) {
return 'Aucune information trouvée pour ce film. ou Clef API incorrect';
}
}
module.exports = {
name: "film",
description: "Commande pour obtenir l'info d'un film",
options: [
{
name: "title",
description: "Titre du film",
required: true,
type: "STRING",
},
{
name: "réalisateur",
description: "réalisateur du film",
required: false,
type: "STRING",
},
],
runSlash: async (client: Client, interaction: CommandInteraction) => {
await interaction.deferReply({ ephemeral: true });
let film= interaction.options.getString("title") as string;
const filmInfo = await getMovieInfo(film);
console.log(filmInfo);
if (typeof filmInfo === 'string') {
await interaction.editReply({ content: filmInfo });
} else {
const info = `**Titre**: ${filmInfo.title}\n**Réalisateur**: ${filmInfo.director}\n**Synopsis**: ${filmInfo.plot}\n**Année**: ${filmInfo.year}`;
await interaction.editReply({ content: info });
// Ajouter le film en BDD
await Users.findOrCreate({
where: { idUser: interaction.user.id,UserName: interaction.user.username},
});
const idFilm=uuidv4();
const iduser=interaction.user.id
await Films.create({
idFilm: idFilm,
titre: filmInfo.title,
realisateur: filmInfo.director ,
dateSortie: filmInfo.year ,
});
await UserFilm.create({
idFilm: idFilm,
idUser: iduser,
});
await interaction.followUp({ content: `Le film "${filmInfo.title}" a été ajouté à votre liste.`,ephemeral:true });
}
}
}