@sefinek/random-emoji 1.3.0 → 1.4.2
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/CHANGELOG.md +14 -1
- package/README.md +17 -29
- package/README_PL.md +94 -0
- package/{json/cats.json → data/emoji/cat.json} +0 -0
- package/{json/circles.json → data/emoji/circle.json} +0 -0
- package/data/emoji/food.json +1 -0
- package/{json/hearts.json → data/emoji/heart.json} +0 -0
- package/{json/emojis.json → data/emoji/random.json} +0 -0
- package/{json → data/emoji}/unicode.json +0 -0
- package/{api → data}/endpoints.json +0 -0
- package/index.d.ts +14 -0
- package/index.js +16 -21
- package/package.json +6 -3
- package/test.js +15 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
+
## 📥・v1.4.2 (02.06.2022)
|
|
2
|
+
1. Added typings.
|
|
3
|
+
2. Small fixes in README.md and README_PL.md.
|
|
4
|
+
|
|
5
|
+
## 📥・v1.4.1 (02.06.2022)
|
|
6
|
+
1. Small changes.
|
|
7
|
+
|
|
8
|
+
## 📥・v1.4.0 (15.05.2022)
|
|
9
|
+
1. Added new function `foods()` with random foods.
|
|
10
|
+
2. Fixes in `new kaomojis()`.
|
|
11
|
+
3. Small fixes in README.md.
|
|
12
|
+
4. Added Poland version of README.md file.
|
|
13
|
+
|
|
1
14
|
## 📥・v1.3.0 (13.05.2022)
|
|
2
15
|
1. Updated README.md file.
|
|
3
|
-
2. Added
|
|
16
|
+
2. Added `new kaomojis()` with random kaomoji from my [API](https://api.skiffybot.xyz). See examples: [[1](https://github.com/sefinek24/random-emoji/blob/main/test.js)] [[2](https://github.com/sefinek24/random-emoji#%EF%B8%8F--kaomojis)]
|
|
4
17
|
3. Other changes to [index.js](https://github.com/sefinek24/random-emoji/blob/main/index.js) file.
|
|
5
18
|
|
|
6
19
|
## 📥・v1.2.0 (12.05.2022)
|
package/README.md
CHANGED
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
<img src="https://img.shields.io/github/last-commit/sefinek24/random-emoji" alt="Last commit">
|
|
8
8
|
<img src="https://img.shields.io/github/commit-activity/w/sefinek24/random-emoji" alt="Commit activity">
|
|
9
9
|
<img src="https://img.shields.io/github/languages/code-size/sefinek24/random-emoji" alt="Code size">
|
|
10
|
-
<img src="https://img.shields.io/tokei/lines/github/sefinek24/random-emoji" alt="Total lines">
|
|
11
10
|
</a>
|
|
12
11
|
</div>
|
|
13
12
|
|
|
@@ -19,52 +18,41 @@
|
|
|
19
18
|
const random = require('@sefinek/random-emoji');
|
|
20
19
|
|
|
21
20
|
// 1. A single emote
|
|
22
|
-
console.log(unicode());
|
|
21
|
+
console.log(random.unicode());
|
|
23
22
|
// > 🥰
|
|
24
23
|
|
|
25
24
|
// 2. Random emoji with name and type
|
|
26
25
|
const emoji = random.emojis();
|
|
27
26
|
console.log(`Name: ${emoji.name}; Emoji: ${emoji.content};`);
|
|
28
|
-
// > Name: Cat Face; Type: animal; Emoji: 🐱;
|
|
29
27
|
|
|
30
28
|
// 3. Random cat
|
|
31
29
|
const cat = random.cats();
|
|
32
30
|
console.log(`Name: ${cat.name}; Emoji: ${cat.content};`);
|
|
33
31
|
// > Name: smiley_cat; Emoji: 😺;
|
|
34
|
-
|
|
35
|
-
// 4. Random heart
|
|
36
|
-
const heart = random.hearts();
|
|
37
|
-
console.log(`Name: ${heart.name}; Emoji: ${heart.content};`);
|
|
38
|
-
// > Name: blue_heart; Emoji: 💙;
|
|
39
|
-
|
|
40
|
-
// 5. Random circle
|
|
41
|
-
const circle = random.circles();
|
|
42
|
-
console.log(`Name: ${heart.name}; Emoji: ${heart.content};`);
|
|
43
|
-
// > Name: blue_circle; Emoji: 🔵;
|
|
44
32
|
```
|
|
45
33
|
|
|
46
34
|
## 😻 • Usage
|
|
47
|
-
| Function
|
|
48
|
-
|
|
49
|
-
| [
|
|
50
|
-
| [
|
|
51
|
-
| [cats](https://github.com/sefinek24/random-emoji
|
|
52
|
-
| [hearts](https://github.com/sefinek24/random-emoji
|
|
53
|
-
| [
|
|
54
|
-
| [
|
|
55
|
-
|
|
56
|
-
|
|
35
|
+
| Function | Description |
|
|
36
|
+
|-----------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------|
|
|
37
|
+
| [unicode](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L3) | A single emote |
|
|
38
|
+
| [emojis](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L6) | Random emoji with name and type |
|
|
39
|
+
| [cats](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L10) | Return random cat |
|
|
40
|
+
| [hearts](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L14) | Return random heart |
|
|
41
|
+
| [foods](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L18) | Return random food |
|
|
42
|
+
| [circles](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L22) | Return random circle |
|
|
43
|
+
| [kaomojis](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L26) | Return random kaomojis from [API](https://api.skiffybot.xyz) |
|
|
44
|
+
|
|
45
|
+
## ⛩️ • Kaomoji
|
|
57
46
|
### » Async/await example
|
|
58
47
|
```js
|
|
59
48
|
const random = require('@sefinek/random-emoji');
|
|
60
|
-
const kaomoji = new random.kaomojis();
|
|
61
49
|
|
|
62
|
-
async
|
|
63
|
-
const
|
|
64
|
-
console.log(uwu.message);
|
|
65
|
-
}
|
|
50
|
+
(async () => {
|
|
51
|
+
const kaomoji = new random.kaomojis();
|
|
66
52
|
|
|
67
|
-
|
|
53
|
+
const uwu = await kaomoji.uwu();
|
|
54
|
+
console.log(`Random UwU: ${uwu.message}`);
|
|
55
|
+
})();
|
|
68
56
|
```
|
|
69
57
|
|
|
70
58
|
### » Promise example
|
package/README_PL.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>🐱 O tym module 🙀</h1>
|
|
3
|
+
<p>Zwraca losowe emotikony (nazwa, typ) i kaomoji.</p>
|
|
4
|
+
<a href="https://www.npmjs.com/package/@sefinek/random-emoji" target="_blank" title="random-emoji - npm" style="text-decoration:none">
|
|
5
|
+
<img src="https://img.shields.io/npm/dt/@sefinek/random-emoji.svg?maxAge=3600" alt="Liczba pobrań">
|
|
6
|
+
<img src="https://img.shields.io/github/issues/sefinek24/random-emoji" alt="Zgłoszone błędy">
|
|
7
|
+
<img src="https://img.shields.io/github/last-commit/sefinek24/random-emoji" alt="Ostatni commit">
|
|
8
|
+
<img src="https://img.shields.io/github/commit-activity/w/sefinek24/random-emoji" alt="Aktywność commitów">
|
|
9
|
+
<img src="https://img.shields.io/github/languages/code-size/sefinek24/random-emoji" alt="Rozmiar kodu">
|
|
10
|
+
</a>
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
## 📥 • Instalacja
|
|
14
|
+
> **$** npm install @sefinek/random-emoji
|
|
15
|
+
|
|
16
|
+
## 😼 • Przykłady
|
|
17
|
+
```js
|
|
18
|
+
const random = require('@sefinek/random-emoji');
|
|
19
|
+
|
|
20
|
+
// 1. Podyńcza emotka
|
|
21
|
+
console.log(random.unicode());
|
|
22
|
+
// > 🥰
|
|
23
|
+
|
|
24
|
+
// 2. Losowe emoji z nazwą i typem
|
|
25
|
+
const emoji = random.emojis();
|
|
26
|
+
console.log(`Nazwa: ${emoji.name}; Emoji: ${emoji.content};`);
|
|
27
|
+
// > Nazwa: jack-o-lantern; Emoji: 🎃;
|
|
28
|
+
|
|
29
|
+
// 3. Losowy kot
|
|
30
|
+
const cat = random.cats();
|
|
31
|
+
console.log(`Nazwa: ${cat.name}; Emoji: ${cat.content};`);
|
|
32
|
+
// > Nazwa: smiley_cat; Emoji: 😺;
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 😻 • Użycie
|
|
36
|
+
| Funkcja | Opis |
|
|
37
|
+
|-----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|
|
|
38
|
+
| [unicode](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L3) | Pojedyncza emotikona |
|
|
39
|
+
| [emojis](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L6) | Losowe emoji z nazwą i typem |
|
|
40
|
+
| [cats](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L10) | Zwraca losowego kota |
|
|
41
|
+
| [hearts](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L14) | Zwraca losowe serce |
|
|
42
|
+
| [foods](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L18) | Zwraca losowe jedzenie |
|
|
43
|
+
| [circles](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L22) | Zwraca losowe kółko |
|
|
44
|
+
| [kaomojis](https://github.com/sefinek24/random-emoji/blob/ab58b364710a4c7106721808e81ccdc7590c4965/test.js#L26) | Zwraca losowe kaomoji z [API](https://api.skiffybot.xyz) |
|
|
45
|
+
|
|
46
|
+
## ⛩️ • Kaomoji
|
|
47
|
+
### » Przykład Async/await
|
|
48
|
+
```js
|
|
49
|
+
const random = require('@sefinek/random-emoji');
|
|
50
|
+
|
|
51
|
+
(async () => {
|
|
52
|
+
const kaomoji = new random.kaomojis();
|
|
53
|
+
|
|
54
|
+
const uwu = await kaomoji.uwu();
|
|
55
|
+
console.log(`Random UwU: ${uwu.message}`);
|
|
56
|
+
})();
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### » Przykład obietnicy
|
|
60
|
+
```js
|
|
61
|
+
const random = require('@sefinek/random-emoji');
|
|
62
|
+
const kaomoji = new random.kaomojis();
|
|
63
|
+
|
|
64
|
+
kaomoji.love().then(data => console.log(data));
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### » Zwrócony obiekt przez [API](https://api.skiffybot.xyz)
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"success": true,
|
|
71
|
+
"status": 200,
|
|
72
|
+
"category": "kaomoji",
|
|
73
|
+
"endpoint": "uwu",
|
|
74
|
+
"message": "🅤🅦🅤"
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### » Punkty końcowe dla Kaomoji
|
|
79
|
+
| Function | Example |
|
|
80
|
+
|-------------------------------------------------------|-----------|
|
|
81
|
+
| [cat](https://api.skiffybot.xyz/api/v1/kaomoji/cat) | (=^-ω-^=) |
|
|
82
|
+
| [dog](https://api.skiffybot.xyz/api/v1/kaomoji/dog) | ଘ(∪・ﻌ・∪)ଓ |
|
|
83
|
+
| [owo](https://api.skiffybot.xyz/api/v1/kaomoji/owo) | 𝓞𝔀𝓞 |
|
|
84
|
+
| [uwu](https://api.skiffybot.xyz/api/v1/kaomoji/uwu) | 𝕌𝕨𝕌 |
|
|
85
|
+
| [love](https://api.skiffybot.xyz/api/v1/kaomoji/love) | ヽ(♡‿♡)ノ |
|
|
86
|
+
|
|
87
|
+
## 📝 • Lista zmian
|
|
88
|
+
> https://github.com/sefinek24/random-emoji/blob/main/CHANGELOG.md
|
|
89
|
+
|
|
90
|
+
## 🤝 • Pomoc
|
|
91
|
+
Otwórz nowy [Issue](https://github.com/sefinek24/random-emoji/issues/new/choose) na GitHubie.
|
|
92
|
+
|
|
93
|
+
## ⭐ • Dzięki
|
|
94
|
+
Daj [gwiazdkę](https://github.com/sefinek24/random-emoji), jeżeli możesz na stronie GitHub.
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[{"content":"🍕","name":"pizza"},{"content":"🍔","name":"hamburger"},{"content":"🍟","name":"fries"},{"content":"🌭","name":"hotdog"},{"content":"🍿","name":"popcorn"},{"content":"🥓","name":"bacon"},{"content":"🥚","name":"egg"},{"content":"🧇","name":"waffle"},{"content":"🥞","name":"pancakes"},{"content":"🧈","name":"butter"},{"content":"🍞","name":"bread"},{"content":"🥐","name":"croissant"},{"content":"🥨","name":"pretzel"},{"content":"🥯","name":"bagel"},{"content":"🥖","name":"french_bread"},{"content":"🫓","name":"flatbread"},{"content":"🧀","name":"cheese"},{"content":"🥗","name":"salad"},{"content":"🥙","name":"stuffed_flatbread"},{"content":"🥪","name":"sandwich"},{"content":"🌮","name":"taco"},{"content":"🌯","name":"burrito"},{"content":"🫔","name":"tamale"},{"content":"🍖","name":"meat_on_bone"},{"content":"🍗","name":"poultry_leg"},{"content":"🥩","name":"cut_of_meat"},{"content":"🍚","name":"rice"},{"content":"🍛","name":"curry"},{"content":"🥘","name":"shallow_pan_of_food"},{"content":"🍲","name":"stew"},{"content":"🫕","name":"fondue"},{"content":"🍝","name":"spaghetti"},{"content":"🥝","name":"kiwi"},{"content":"🍇","name":"grapes"},{"content":"🍈","name":"melon"},{"content":"🍉","name":"watermelon"},{"content":"🍊","name":"tangerine"},{"content":"🍋","name":"lemon"},{"content":"🍌","name":"banana"},{"content":"🍍","name":"pineapple"},{"content":"🥭","name":"mango"},{"content":"🍎","name":"apple"},{"content":"🍏","name":"green_apple"},{"content":"🍐","name":"pear"},{"content":"🍑","name":"peach"},{"content":"🍒","name":"cherries"},{"content":"🍓","name":"strawberry"},{"content":"🫐","name":"blueberries"},{"content":"🍅","name":"tomato"},{"content":"🧅","name":"onion"},{"content":"🥕","name":"carrot"},{"content":"🥔","name":"potato"}]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function unicode(): String
|
|
2
|
+
export function emojis(): Object
|
|
3
|
+
export function cats(): Object
|
|
4
|
+
export function hearts(): Object
|
|
5
|
+
export function foods(): Object
|
|
6
|
+
export function circles(): Object
|
|
7
|
+
|
|
8
|
+
export class kaomojis {
|
|
9
|
+
cat()
|
|
10
|
+
dog()
|
|
11
|
+
owo()
|
|
12
|
+
uwu()
|
|
13
|
+
love()
|
|
14
|
+
}
|
package/index.js
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
const emojis = require('./
|
|
2
|
-
const unicode = require('./
|
|
3
|
-
const cats = require('./
|
|
4
|
-
const hearts = require('./
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
1
|
+
const emojis = require('./data/emoji/random.json');
|
|
2
|
+
const unicode = require('./data/emoji/unicode.json');
|
|
3
|
+
const cats = require('./data/emoji/cat.json');
|
|
4
|
+
const hearts = require('./data/emoji/heart.json');
|
|
5
|
+
const foods = require('./data/emoji/food.json');
|
|
6
|
+
const circles = require('./data/emoji/circle.json');
|
|
7
|
+
const endpoints = require('./data/endpoints.json');
|
|
8
|
+
const { get } = require('node:https');
|
|
9
9
|
|
|
10
10
|
function getContent(url) {
|
|
11
11
|
return new Promise((resolve, reject) => {
|
|
12
12
|
get(url, res => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
res.resume();
|
|
16
|
-
reject(`Request failed with status code ${statusCode}.`);
|
|
13
|
+
if (res.statusCode !== 200) {
|
|
14
|
+
reject(`Request failed with status code ${res.statusCode}.`);
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
res.setEncoding('utf8');
|
|
20
18
|
let rawData = '';
|
|
21
|
-
res.on('data', chunk =>
|
|
19
|
+
res.on('data', chunk => rawData = chunk);
|
|
22
20
|
res.on('end', () => {
|
|
23
21
|
try {
|
|
24
22
|
resolve(JSON.parse(rawData));
|
|
@@ -30,23 +28,20 @@ function getContent(url) {
|
|
|
30
28
|
});
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
class
|
|
31
|
+
class SkiffyAPI {
|
|
34
32
|
constructor() {
|
|
35
33
|
Object.keys(endpoints).forEach(endpoint => {
|
|
36
|
-
this[endpoint] =
|
|
37
|
-
const url = new URL(`https://api.skiffybot.xyz/api/v1/${endpoints[endpoint]}`);
|
|
38
|
-
queryParams !== '' ? url.search = new URLSearchParams(queryParams) : '';
|
|
39
|
-
return await getContent(url.toString());
|
|
40
|
-
};
|
|
34
|
+
this[endpoint] = () => getContent(`https://api.skiffybot.xyz/api/v1/${endpoints[endpoint]}`);
|
|
41
35
|
});
|
|
42
36
|
}
|
|
43
37
|
}
|
|
44
38
|
|
|
45
39
|
module.exports = {
|
|
46
|
-
emojis: () => emojis[Math.floor(Math.random() * emojis.length)],
|
|
47
40
|
unicode: () => unicode[Math.floor(Math.random() * unicode.length)],
|
|
41
|
+
emojis: () => emojis[Math.floor(Math.random() * emojis.length)],
|
|
48
42
|
cats: () => cats[Math.floor(Math.random() * cats.length)],
|
|
49
43
|
hearts: () => hearts[Math.floor(Math.random() * hearts.length)],
|
|
44
|
+
foods: () => foods[Math.floor(Math.random() * foods.length)],
|
|
50
45
|
circles: () => circles[Math.floor(Math.random() * circles.length)],
|
|
51
|
-
kaomojis:
|
|
46
|
+
kaomojis: SkiffyAPI,
|
|
52
47
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sefinek/random-emoji",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.2",
|
|
4
4
|
"description": "Returns a random emoticons (name, type) and kaomojis.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -20,15 +20,18 @@
|
|
|
20
20
|
"cats",
|
|
21
21
|
"heart",
|
|
22
22
|
"hearts",
|
|
23
|
+
"food",
|
|
24
|
+
"foods",
|
|
23
25
|
"circle",
|
|
24
26
|
"circles",
|
|
25
27
|
"name",
|
|
26
28
|
"type"
|
|
27
29
|
],
|
|
28
|
-
"author": "Sefinek
|
|
30
|
+
"author": "Sefinek <contact@sefinek.fun>",
|
|
29
31
|
"license": "MIT",
|
|
30
32
|
"bugs": {
|
|
31
33
|
"url": "https://github.com/sefinek24/random-emoji/issues"
|
|
32
34
|
},
|
|
33
|
-
"homepage": "https://github.com/sefinek24/random-emoji#readme"
|
|
35
|
+
"homepage": "https://github.com/sefinek24/random-emoji#readme",
|
|
36
|
+
"types": "./index.d.ts"
|
|
34
37
|
}
|
package/test.js
CHANGED
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
const
|
|
1
|
+
const random = require('./');
|
|
2
2
|
|
|
3
3
|
// A single emote
|
|
4
|
-
console.log(unicode());
|
|
4
|
+
console.log(random.unicode());
|
|
5
5
|
|
|
6
6
|
// Random emoji with name and type
|
|
7
|
-
const emoji = emojis();
|
|
7
|
+
const emoji = random.emojis();
|
|
8
8
|
console.log(`Name: ${emoji.name}; Emoji: ${emoji.content};`);
|
|
9
9
|
|
|
10
|
-
// Random
|
|
11
|
-
const cat = cats();
|
|
10
|
+
// Random cat
|
|
11
|
+
const cat = random.cats();
|
|
12
12
|
console.log(`Name: ${cat.name}; Emoji: ${cat.content};`);
|
|
13
13
|
|
|
14
|
-
// Random
|
|
15
|
-
const heart = hearts();
|
|
14
|
+
// Random heart
|
|
15
|
+
const heart = random.hearts();
|
|
16
16
|
console.log(`Name: ${heart.name}; Emoji: ${heart.content};`);
|
|
17
17
|
|
|
18
|
-
// Random
|
|
19
|
-
const
|
|
18
|
+
// Random food
|
|
19
|
+
const food = random.foods();
|
|
20
|
+
console.log(`Name: ${food.name}; Emoji: ${food.content};`);
|
|
21
|
+
|
|
22
|
+
// Random circle
|
|
23
|
+
const circle = random.circles();
|
|
20
24
|
console.log(`Name: ${circle.name}; Emoji: ${circle.content};`);
|
|
21
25
|
|
|
22
26
|
// Random kaomoji
|
|
23
27
|
(async () => {
|
|
24
|
-
const kaomoji = new kaomojis();
|
|
28
|
+
const kaomoji = new random.kaomojis();
|
|
29
|
+
|
|
25
30
|
const kaoCat = await kaomoji.cat();
|
|
26
31
|
console.log(`Cat face: ${kaoCat.message}`);
|
|
27
32
|
|