1
- const axios = require ( 'axios' )
2
- const cheerio = require ( 'cheerio' )
3
-
1
+ const axios = require ( 'axios' ) ;
2
+ const cheerio = require ( 'cheerio' ) ;
4
3
5
4
async function loadCheerio ( url ) {
6
- try {
7
- let response = await axios . get ( url )
8
- let html = response . data
9
-
10
- return cheerio . load ( html )
11
- }
12
-
13
- catch ( err ) {
14
- console . log ( 'error' , err . response . status )
15
-
16
- return null
17
- }
5
+ try {
6
+ const response = await axios . get ( url ) ;
7
+ const html = response . data ;
8
+
9
+ return cheerio . load ( html ) ;
10
+ } catch ( err ) {
11
+ console . log ( 'error' , err . response . status ) ;
12
+
13
+ return null ;
14
+ }
18
15
}
19
16
20
17
async function getData ( url ) {
21
- let $ = await loadCheerio ( url )
22
- if ( typeof $ === 'function' ) {
23
- let priceStatistics = $ ( '.sc-AxhCb.gsRRvB.container___E9axz' )
24
- let priceStatisticsTable = priceStatistics . find ( 'table' )
25
- let priceStatisticsTableBody = priceStatisticsTable . find ( 'tbody' )
26
- let priceStatisticsTableRow = priceStatisticsTableBody . find ( 'tr' )
27
-
28
- let data = [ ]
29
- priceStatisticsTableRow . each ( function ( ) {
30
- let elem = $ ( this )
31
-
32
- let key = elem . find ( 'th' ) . text ( )
33
-
34
- let value = elem . find ( 'td' )
35
- if ( value . find ( 'span.sc-1v2ivon-0.gClTFY' ) . text ( ) ) {
36
- value = value . find ( 'span' ) . first ( ) . text ( )
37
- + ' || ' +
38
- value . find ( 'span.sc-1v2ivon-0.gClTFY' ) . text ( )
39
- }
40
-
41
- else {
42
- value = value . text ( )
43
- }
44
-
45
- console . log ( value )
46
-
47
- if ( value !== 'No Data' || value !== 'Sem Dados' ) {
48
- let object = Object . fromEntries ( [ [ key , value ] ] )
49
- data . push ( object )
50
- }
51
- } )
52
-
53
- return data
54
- }
18
+ const $ = await loadCheerio ( url ) ;
19
+ if ( typeof $ === 'function' ) {
20
+ const priceStatistics = $ ( '.sc-AxhCb.gsRRvB.container___E9axz' ) ;
21
+ const priceStatisticsTable = priceStatistics . find ( 'table' ) ;
22
+ const priceStatisticsTableBody = priceStatisticsTable . find ( 'tbody' ) ;
23
+ const priceStatisticsTableRow = priceStatisticsTableBody . find ( 'tr' ) ;
24
+
25
+ const data = [ ] ;
26
+ priceStatisticsTableRow . each ( function ( ) {
27
+ const elem = $ ( this ) ;
28
+
29
+ const key = elem . find ( 'th' ) . text ( ) ;
30
+
31
+ let value = elem . find ( 'td' ) ;
32
+ if ( value . find ( 'span.sc-1v2ivon-0.gClTFY' ) . text ( ) ) {
33
+ value = `${ value . find ( 'span' ) . first ( ) . text ( ) } || ${ value
34
+ . find ( 'span.sc-1v2ivon-0.gClTFY' )
35
+ . text ( ) } `;
36
+ } else {
37
+ value = value . text ( ) ;
38
+ }
55
39
56
- return null
40
+ console . log ( value ) ;
41
+
42
+ if ( value !== 'No Data' || value !== 'Sem Dados' ) {
43
+ const object = Object . fromEntries ( [ [ key , value ] ] ) ;
44
+ data . push ( object ) ;
45
+ }
46
+ } ) ;
47
+
48
+ return data ;
49
+ }
50
+
51
+ return null ;
57
52
}
58
53
59
- let _default = `
54
+ const defaultMessage = `
60
55
uso: *!coin* [--flag] name
61
56
_--all -> mostra todas as informações disponiveis_
62
57
63
58
a flag _all_ pode retornar dados em excesso, sua utilização repetida será considera spam
64
- `
59
+ ` ;
65
60
66
- module . exports = async function ( data ) {
67
- let BASE_URL = 'https://coinmarketcap.com/currencies/'
61
+ module . exports = async ( data ) => {
62
+ let BASE_URL = 'https://coinmarketcap.com/currencies/' ;
68
63
69
- if ( data . args . includes ( 'brl' ) ) {
70
- BASE_URL = 'https://coinmarketcap.com/pt-br/currencies/'
71
- }
72
-
73
- if ( data . text ) {
74
- let text = data . text . replace ( / \s / g, '-' ) . toLowerCase ( )
75
- let url = BASE_URL + text
76
- let coinData = await getData ( url )
77
-
78
- if ( coinData ) {
79
- if ( ! data . args . includes ( 'all' ) )
80
- coinData = coinData . slice ( 0 , 3 )
81
-
82
- let coinDataString = ''
83
- coinData . forEach ( elem => {
84
- let [ key , value ] = Object . entries ( elem ) [ 0 ]
85
-
86
- let string = `*_${ key } _*:\n - ${ value } \n\n`
87
- coinDataString += string
88
- } )
89
-
90
- return coinDataString . trim ( )
91
- }
92
-
93
- else {
94
- return 'moeda não encontrada'
95
- }
96
- }
64
+ if ( data . args . includes ( 'brl' ) ) {
65
+ BASE_URL = 'https://coinmarketcap.com/pt-br/currencies/' ;
66
+ }
67
+
68
+ if ( data . text ) {
69
+ const text = data . text . replace ( / \s / g, '-' ) . toLowerCase ( ) ;
70
+ const url = BASE_URL + text ;
71
+ let coinData = await getData ( url ) ;
72
+
73
+ if ( coinData ) {
74
+ if ( ! data . args . includes ( 'all' ) ) coinData = coinData . slice ( 0 , 3 ) ;
75
+
76
+ let coinDataString = '' ;
77
+ coinData . forEach ( ( elem ) => {
78
+ const [ key , value ] = Object . entries ( elem ) [ 0 ] ;
79
+
80
+ const string = `*_${ key } _*:\n - ${ value } \n\n` ;
81
+ coinDataString += string ;
82
+ } ) ;
97
83
98
- else {
99
- return _default . trim ( )
84
+ return coinDataString . trim ( ) ;
100
85
}
101
- }
86
+ return 'moeda não encontrada' ;
87
+ }
88
+ return defaultMessage . trim ( ) ;
89
+ } ;
0 commit comments