neekuro 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/package.json",
3
+ "name": "neekuro",
4
+ "version": "2.0.0",
5
+ "description": "Una biblioteca de imágenes con temática de anime para bots de Discord.",
6
+ "main": "sources/main/index.js",
7
+ "types": "sources/typings/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./sources/typings/index.d.ts",
12
+ "default": "./sources/main/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./sources/typings/index.d.ts",
16
+ "default": "./sources/main/index.js"
17
+ }
18
+ }
19
+ },
20
+ "directories": {
21
+ "test": "test"
22
+ },
23
+ "files": [
24
+ "sources",
25
+ "README.md"
26
+ ],
27
+ "contributors": [
28
+ "cacao0027 <kzmkuro@gmail.com>"
29
+ ],
30
+ "author": "cacao0027 <kzmkuro@gmail.com>",
31
+ "keywords": [
32
+ "anime",
33
+ "acción",
34
+ "gifs",
35
+ "imagenes",
36
+ "nsfw",
37
+ "sfw",
38
+ "discord",
39
+ "action",
40
+ "images"
41
+ ],
42
+ "license": "ISC",
43
+ "scripts": {
44
+ "test": "nodemon node ./test/main.test.js"
45
+ },
46
+ "engines": {
47
+ "node": ">=20.12.2"
48
+ },
49
+ "dependencies": {
50
+ "canvas": "^3.1.0",
51
+ "hex-color-regex": "^1.1.0",
52
+ "neekuro": "file:",
53
+ "nekoapi.beta": "^1.0.5",
54
+ "node-fetch": "^3.3.2"
55
+ },
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "git+https://github.com/CacaoNk0027/neekuro_package.git"
59
+ },
60
+ "bugs": {
61
+ "url": "https://github.com/CacaoNk0027/neekuro_package/issues"
62
+ },
63
+ "homepage": "https://github.com/CacaoNk0027/neekuro_package#readme"
64
+ }
package/readme.md ADDED
@@ -0,0 +1,123 @@
1
+ <center> <h1>NeeKuro</h1> </center>
2
+ <center>de <b>Kmz Kuro</b> en nombre de <b>NexaTDC</b></center>
3
+ <center>creada apartir de <b>cacao_nekoapi</b> y <b>nekoapi.beta</b> en npm.js</center>
4
+ <br>
5
+ <center>
6
+ <img alt="NPM Version" src="https://img.shields.io/npm/v/neekuro?logo=npm&style=flat&color=0d8973">
7
+ <img alt="Downloads" src="https://img.shields.io/npm/dw/neekuro?style=flat&color=bf9308&label=Descargas">
8
+ <img alt="Typescript" src="https://img.shields.io/badge/declaraciones-typescript-blue?logo=typescript">
9
+ <img alt="NPM Version" src="https://img.shields.io/badge/node%20version-%3E=20.12.2-489248?logo=nodedotjs">
10
+ </center>
11
+
12
+ ### ¿Qué es "NeeKuro"?
13
+
14
+ NeeKuro es una biblioteca de imágenes con temática de anime para bots de Discord e imagenes de bienvenida.
15
+
16
+ Principalmente se creo con el fin de ser unicamente para <b>Maple Bot</b>. Sin embargo, desde que se decidio hacer a Maple de codigo publico, tambien se decidio que tanto su API como paquete fuesen libres.
17
+
18
+ > notas: el paquete puede contener errores ya que se encuentra en fase beta, la API se hostea de manera gratuita por lo que las solicitudes no siempre pueden estar disponibles.
19
+
20
+ ## Instalacion
21
+
22
+ ```sh
23
+ npm install neekuro
24
+ ```
25
+
26
+ ## Ejemplos
27
+
28
+ NeeKuro es un paquete que requiere de un token para llevar a cabo sus sollicitudes, por lo que requieres de ir a la [API Oficial](https://www.nexatdc.work.gd/api/) para poder generar un token.
29
+
30
+ ### primeros pasos
31
+ 1 - Instanciamiento de usuario y establecimiento del token.<br>Este paso se requiere ya que con ello se establece globalmente el token por el paquete
32
+ <hr>
33
+
34
+ ```javascript
35
+ require('dotenv').config();
36
+ // importacion del paquete neekuro
37
+ const neekuro = require('neekuro');
38
+
39
+ // instanciamiento del usuario
40
+ const user = new neekuro.User();
41
+
42
+ // establecimiento del token
43
+ user.token(process.env['ApiToken'])
44
+ ```
45
+ <hr>
46
+
47
+ #### Peticion de imagenes simple
48
+ Una vez estableciste el token puedes comenzar a pedir imagenes
49
+
50
+ ```javascript
51
+
52
+ const neekuro = require('neekuro');
53
+
54
+ /**
55
+ * Codigo de usuario
56
+ */
57
+
58
+ // es necesario escribir todo siempre dentro de una funcion asincrona
59
+ async function ObtenerImagen() {
60
+ // obtenemos un gif con el metodo getGif de SFW
61
+ const cuddle = await neekuro.SFW.getGif('action', 'cuddle');
62
+
63
+ // imprimimos la url y el anime del gif
64
+ console.log(cuddle.getUrl(), cuddle.getAnime())
65
+ }
66
+
67
+ // ejecutamos la funcion
68
+ ObtenerImagen();
69
+
70
+ // nota: no te aguites por el gif y subcategoria, todo viene en documentado con typescript, solo tienes que completar los pasos :)
71
+ ```
72
+ #### Ejemplo de imagenes de bienvenida
73
+ Las imagenes de bienvenida son otra de las alternativas que otorga NeeKuro, puedes hacer una imagen de la siguiente manera:
74
+ ```javascript
75
+ // obtenemos directamente la clase del paquete
76
+ const { Welcome } = require('neekuro');
77
+ const fs = require('fs');
78
+
79
+ // Configuración básica, añade un avatar titulo y descripción
80
+ const welcome = new Welcome()
81
+ .setAvatar('https://ejemplo.com/avatar.jpg')
82
+ .setTitle('¡Bienvenido!')
83
+ .setDescription('Al servidor de Discord');
84
+
85
+ // Genera y guarda la imagen
86
+ welcome.build()
87
+ .then(image => fs.writeFileSync('bienvenida.png', image))
88
+ .then(() => console.log('Imagen creada correctamente!'))
89
+ .catch(err => console.error('Error:', err.message));
90
+
91
+ // nota: como antes, todo viene bien documentado en el paquete, solo sigue los pasos y explora por ti ;3
92
+ ```
93
+ <hr>
94
+ <center>
95
+ <p>Resultado esperado</p>
96
+ <img src="./sources/assets/example.png" style="width: 60%; max-width: 500px;" alt="Texto alternativo">
97
+ </center>
98
+
99
+ ## Contenido
100
+
101
+ Lo siguente es lo que contiene (o contendra) el paquete
102
+
103
+ | Categoria | Descripción | |
104
+ |-|-|-|
105
+ | Sfw | Contenido de roleplay no nsfw | en desarrollo
106
+ | Nsfw | Contenido +18 general y roleplay | no comenzada
107
+
108
+ ## Finalmente....
109
+
110
+ Tanto la API, paquete y bot se encuentran en desarrollo, ante todo te pedimos la mayor de las paciencias, te aseguraremos que el resultado te gustará! :'3
111
+
112
+ Finalmente te agradecemos tu preferencia y esperamos haber cumplido tus espectativas ;)
113
+ <br><br><hr>
114
+
115
+ ### que se tiene planeado?
116
+
117
+ Principalmente terminaremos la categoria acción y reacción para tener la primer subida a NPM de este paquete y asi finalmente tener terminada la categoria SFW. <br> Sin embargo una de las problematicas que se nos presentan son buscar los gifs para la API asi como sus animes <b>es un proceso lento...</b> y agobiante...
118
+ <br>Por eso ahora mas que nunca queremos que nos apoyes en <b>NexaTDC</b>! Con el fin de poder dar al publico lo mas pronto posible los servicios que Maple Bot ofrece.
119
+
120
+ <b><i>No es para mi, es para la comunidad... Si no es para la comunidad, no es para nadie...</i></b>
121
+ <i>- NexaTDC</i>
122
+ <br><br><br><br>
123
+ CC. Creative Commons 2025 - @CacaoNk0027
Binary file
Binary file
Binary file
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @typedef {import('../../typings').ApiResponse} ApiResponse
5
+ * @typedef {import('node-fetch').Response} Response
6
+ */
7
+
8
+ /**
9
+ * Clase APIError
10
+ * Errores personalizados respecto a la api rest
11
+ * @extends Error
12
+ */
13
+ class APIError extends Error {
14
+ /**
15
+ * Crea la instancia del error
16
+ * @param {string} endpoint la ruta a la que se realizo la peticion
17
+ * @param {Response} response respuesta de node-fetch
18
+ * @param {ApiResponse} data respuesta de la api
19
+ */
20
+ constructor(endpoint, response, data) {
21
+ super();
22
+
23
+ this.name = `NekoREST Error [${endpoint}]`
24
+ this.message = this.#determineMessage(data);
25
+
26
+ /**
27
+ * @type {string}
28
+ */
29
+ this.url = response?.url ?? 'unknown';
30
+
31
+ /**
32
+ * @type {number}
33
+ */
34
+ this.statusCode = parseInt(response?.status ?? 500);
35
+
36
+ /**
37
+ * @type {ApiResponse}
38
+ */
39
+ this.data = data
40
+
41
+ }
42
+
43
+ /**
44
+ * Determina el mensaje del error basado en el codigo de la api
45
+ * @param {ApiResponse} response respuesta de la api
46
+ * @returns {string} mensaje de error
47
+ */
48
+ #determineMessage(response) {
49
+ if(response.code === 403) {
50
+ return 'TOKEN ERROR: el token que haz proporcionado es invalido'
51
+ } else
52
+ if(response.code === 401) {
53
+ return 'TOKEN ERROR: no se proporciono un token'
54
+ } else {
55
+ return response.message ?? 'descripcion no dada'
56
+ }
57
+ }
58
+ }
59
+
60
+ module.exports = APIError
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Clase de erorres para la API
5
+ * @extends Error
6
+ */
7
+ class NekoError extends Error {
8
+ /**
9
+ * Crea una instancia para errores del paquete
10
+ * @param {string} name Corresponde al nombre del error
11
+ * @param {string} message Mensaje de error
12
+ */
13
+ constructor(name, message) {
14
+ super(message);
15
+
16
+ this.name = `NeeKuro Error [${name}]`
17
+
18
+ /**
19
+ * @type {string}
20
+ */
21
+ this.message = message
22
+ }
23
+ }
24
+
25
+ module.exports = NekoError
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @typedef {import("../../typings").GifResponse} GifResponse
5
+ */
6
+
7
+ /**
8
+ * Clase NekoGif
9
+ * crea un objeto Gif a partir de la respuesta del servidor
10
+ */
11
+ class NekoGif {
12
+
13
+ /**
14
+ * Recibe la respuesta de la api
15
+ * @param {GifResponse} response respuesta de la api
16
+ */
17
+ constructor(response) {
18
+
19
+ /**
20
+ * URL del gif
21
+ * @type {string|null}
22
+ */
23
+ this.url = response.data.url || null
24
+
25
+ /**
26
+ * Anime del gif
27
+ * @type {string|null}
28
+ */
29
+ this.anime = response.data.anime || null
30
+ }
31
+
32
+ /**
33
+ * Obten la url del Gif
34
+ * @returns {string|null} URL
35
+ */
36
+ getUrl() {
37
+ return this.url;
38
+ }
39
+
40
+ /**
41
+ * Obten el anime del Gif
42
+ * @returns {string|null} Anime
43
+ */
44
+ getAnime() {
45
+ return this.anime;
46
+ }
47
+
48
+ }
49
+
50
+ module.exports = NekoGif