forked from KillovSky/Iris
-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.js
3218 lines (2822 loc) · 150 KB
/
config.js
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
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Recodado por Lucas R. e construido em homenagem ao Legião Z.
* Você pode usar e moldar esse bot MAS NÃO REMOVA os creditos.
* Evite remover coisas como o Link do legião, obrigado!
*/
const { decryptMedia } = require('@open-wa/wa-decrypt')
const fs = require('fs-extra')
const axios = require('axios')
const sharp = require('sharp')
const math = require('mathjs')
const search = require("simple-play-store-search")
const google = require('google-it')
const isPorn = require('is-porn')
const imgsearch = require('node-reverse-image-search')
const imgbbUploader = require('imgbb-uploader')
const moment = require('moment-timezone')
moment.tz.setDefault('America/Sao_Paulo').locale('pt_BR')
const get = require('got')
const request = require('request')
const color = require('./lib/color')
const { spawn, exec, execFile } = require('child_process')
const nhentai = require('nhentai-js')
const { API } = require('nhentai-api')
const { randomNimek, sleep, wall, tulis, ss } = require('./lib/functions')
const { owner, donate, down, help, admins, adult, readme, lang, convh } = require('./lib/help')
const { stdout } = require('process')
const bent = require('bent')
const { doing } = require('./lib/translate.js')
const { meme, msgFilter, translate, killo } = require('./lib')
const { uploadImages } = require('./lib/fether')
const feature = require('./lib/poll')
const { sobre } = require('./lib/sobre')
const BrainlySearch = require('./lib/brainly')
const { removeBackgroundFromImageBase64 } = require('remove.bg')
const fetch = require('node-fetch');
const nsfw_ = JSON.parse(fs.readFileSync('./lib/NSFW.json'))
const welkom = JSON.parse(fs.readFileSync('./lib/welcome.json'))
const exsv = JSON.parse(fs.readFileSync('./lib/exclusive.json'))
const faki = JSON.parse(fs.readFileSync('./lib/fake.json'))
const bklist = JSON.parse(fs.readFileSync('./lib/blacklist.json'))
const atbk = JSON.parse(fs.readFileSync('./lib/anti.json'))
const errorurl = 'https://steamuserimages-a.akamaihd.net/ugc/954087817129084207/5B7E46EE484181A676C02DFCAD48ECB1C74BC423/?imw=512&&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false'
const errorurl2 = 'https://steamuserimages-a.akamaihd.net/ugc/954087817129084207/5B7E46EE484181A676C02DFCAD48ECB1C74BC423/?imw=512&&ima=fit&impolicy=Letterbox&imcolor=%23000000&letterbox=false'
module.exports = kconfig = async (kill, message) => {
try {
const { type, id, from, t, sender, author, isGroupMsg, chat, chatId, caption, isMedia, mimetype, quotedMsg, quotedMsgObj, mentionedJidList } = message
let { body } = message
const { name, formattedTitle } = chat
let { pushname, verifiedName, formattedName } = sender
pushname = pushname || verifiedName || formattedName
const double = Math.floor(Math.random() * 2) + 1
const four = Math.floor(Math.random() * 4) + 1
const triple = Math.floor(Math.random() * 3) + 1
const cinco = Math.floor(Math.random() * 5) + 1
const six = Math.floor(Math.random() * 6) + 1
const seven = Math.floor(Math.random() * 7) + 1
const lvpc = Math.floor(Math.random() * 101) + 1
const time = moment(t * 1000).format('DD/MM HH:mm:ss')
const processTime = (timestamp, now) => { return moment.duration(now - moment(timestamp * 1000)).asSeconds() }
const botNumber = await kill.getHostNumber()
const blockNumber = await kill.getBlockedIds()
const groupId = isGroupMsg ? chat.groupMetadata.id : ''
const groupAdmins = isGroupMsg ? await kill.getGroupAdmins(groupId) : ''
const isGroupAdmins = isGroupMsg ? groupAdmins.includes(sender.id) : false
const isBotGroupAdmins = isGroupMsg ? groupAdmins.includes(botNumber + '@c.us') : false
const chats = (type === 'chat') ? body : (type === 'image' || type === 'video') ? caption : ''
const ownerNumber = '55189****@c.us'
const isOwn = sender.id
const isOwner = isOwn.includes(ownerNumber)
global.pollfile = 'poll_Config_'+chat.id+'.json'
global.voterslistfile = 'poll_voters_Config_'+chat.id+'.json'
global.client = kill
const isLeg = exsv.includes(chatId)
const isNsfw = isGroupMsg ? nsfw_.includes(chat.id) : false
const isUrl = new RegExp(/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)/gi)
// Bot Prefix
const prefix = '/'
body = (type === 'chat' && body.startsWith(prefix)) ? body : ((type === 'image' && caption || type === 'video' && caption) && caption.startsWith(prefix)) ? caption : ''
const command = body.slice(1).trim().split(/ +/).shift().toLowerCase()
const arg = body.trim().substring(body.indexOf(' ') + 1)
const args = body.trim().split(/ +/).slice(1)
const isCmd = body.startsWith(prefix)
const url = args.length !== 0 ? args[0] : ''
const uaOverride = process.env.UserAgent
const isQuotedImage = quotedMsg && quotedMsg.type === 'image'
const isQuotedVideo = quotedMsg && quotedMsg.type === 'video'
const mess = {
wait: 'Pode me esperar um pouquinho? Realizar esse tipo de comando leva certo tempo.',
error: {
St: 'Você usou errado haha!\nPara usar isso, envie ou marque uma foto com essa mensagem.',
Ki: 'Para remover administradores, você precisa primeiro remover o ADM deles.',
Ad: 'Erros! Não pude adicionar, pode ser por limitação de adicionar ou erros meus.',
Go: 'Oras, apenas o dono de um grupo pode usar esse tipo de comando.',
Kl: 'Opa! Isso é apenas meu criador, você não pode acessar.',
Ga: 'Apenas Administradores podem usar, então trate de virar um haha!',
Gp: 'Desculpe, mas isso é um comando para grupos.',
Ac: 'Somente grupos que permitem conteúdo +18 podem usar comandos assim, se você é o dono e quer isso, use /nsfw enable, ou use no PV.',
Ba: 'Caro administrador, se quiser que eu use esses comandos, precisa me deixar ser uma ademira!',
Iv: 'Esse link está correto? Ele me parece errado...'
}
}
// ANTI GRUPOS && ANTI PORNO
if (isGroupMsg && isLeg && !isGroupAdmins && !isOwner){
if (chats.match(/(https?:\/\/chat.whatsapp.com)/gi)) {
console.log('Verificando o link de grupo recebido.')
const check = await kill.inviteInfo(chats)
if (check.status == 200) {
kill.removeParticipant(groupId, sender.id)
console.log('Era link real então removi o ' + sender.id)
} else {
console.log('Link de grupo recebido! Mas é falso, não representa ameaças')
}
} else if (chats.match(/\bhttps?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi)) {
const chatpn = chats.match(/\bhttps?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/gi)
const flnrl = new URL(chatpn)
console.log('Verificando se há pornografia no link recebido...\n' + flnrl)
isPorn(flnrl.hostname, function(error, status) {
if (status == true) {
kill.removeParticipant(groupId, sender.id)
console.log('Tinha pornografia então removi o ' + sender.id)
}
})
}
} else {
if (chats.match(/(https?:\/\/chat.whatsapp.com)/gi)) {
console.log('Link de grupo recebido, mas foi por alguém da White List ou no PV.')
}
}
// ANTI FLOOD PRIVADO
if (isCmd && msgFilter.isFiltered(from) && !isGroupMsg) {
await kill.reply(from, 'EI! Espere 10 segundos antes de usar outros comandos!', id)
return console.log(color('FLOOD AS', 'red'), color(moment(t * 1000).format('DD/MM/YY HH:mm:ss'), 'yellow'), color(`${command} [${args.length}]`), 'de', color(pushname))
}
// ANTI FLOOD GRUPOS
if (isCmd && msgFilter.isFiltered(from) && isGroupMsg) {
await kill.reply(from, 'EI! Espere 10 segundos antes de usar outros comandos!', id)
return console.log(color('FLOOD AS', 'red'), color(moment(t * 1000).format('DD/MM/YY HH:mm:ss'), 'yellow'), color(`${command} [${args.length}]`), 'de', color(pushname), 'em', color(name || formattedTitle))
}
// MENSAGENS
if (!isCmd && !isGroupMsg) { return console.log('> MENSAGEM AS', color(moment(t * 1000).format('DD/MM/YY HH:mm:ss'), 'yellow'), 'de', color(pushname)) }
if (!isCmd && isGroupMsg) { return console.log('> MENSAGEM AS', color(moment(t * 1000).format('DD/MM/YY HH:mm:ss'), 'yellow'), 'de', color(pushname), 'em', color(name || formattedTitle)) }
// COMANDOS
if (isCmd && !isGroupMsg) { console.log(color(`> COMANDO "/${command} [${args.length}]" AS`), color(moment(t * 1000).format('DD/MM/YY HH:mm:ss'), 'yellow'), 'de', color(pushname)) }
if (isCmd && isGroupMsg) { console.log(color(`> COMANDO "/${command} [${args.length}]" AS`), color(moment(t * 1000).format('DD/MM/YY HH:mm:ss'), 'yellow'), 'de', color(pushname), 'em', color(name || formattedTitle)) }
// Impede SPAM
msgFilter.addFilter(from)
switch(command) {
case 'sticker':
case 'stiker':
if (isMedia && type === 'image') {
const mediaData = await decryptMedia(message, uaOverride)
sharp(mediaData)
.resize(512, 512, {
fit: sharp.fit.contain
})
.toBuffer()
.then(async (resizedImageBuffer) => {
let resizedImageData = resizedImageBuffer.toString('base64');
let resizedBase64 = `data:${mimetype};base64,${resizedImageData}`;
await kill.sendImageAsSticker(from, resizedBase64)
})
} else if (quotedMsg && quotedMsg.type == 'image') {
const mediaData = await decryptMedia(quotedMsg, uaOverride)
sharp(mediaData)
.resize(512, 512, {
fit: sharp.fit.contain
})
.toBuffer()
.then(async (resizedImageBuffer) => {
let resizedImageData = resizedImageBuffer.toString('base64');
let resizedBase64 = `data:${quotedMsg.mimetype};base64,${resizedImageData}`;
await kill.sendImageAsSticker(from, resizedBase64)
})
} else if (args.length == 1) {
const url = args[1]
if (url.match(isUrl)) {
await kill.sendStickerfromUrl(from, url, { method: 'get' })
.catch(err => console.log('Erro: ', err))
} else {
kill.reply(from, mess.error.Iv, id)
}
} else {
kill.reply(from, mess.error.St, id)
}
break
case 'ttp':
if (args.length == 0) return kill.reply(from, 'Cadê a frase né?', id)
axios.get(`https://st4rz.herokuapp.com/api/ttp?kata=${body.slice(5)}`)
.then(res => {
kill.sendImageAsSticker(from, res.data.result)
})
break
case 'about':
await kill.sendFile(from, './lib/media/img/iris.png', 'iris.png', sobre, id)
break
case 'stickernobg':
if (isMedia) {
try {
var mediaData = await decryptMedia(message, uaOverride)
var imageBase64 = `data:${mimetype};base64,${mediaData.toString('base64')}`
var base64img = imageBase64
var outFile = './lib/media/img/noBg.png'
var result = await removeBackgroundFromImageBase64({ base64img, apiKey: 'API DO SITE REMOVE.BG', size: 'auto', type: 'auto', outFile }) // bota sua propria api ai, cuidado no limite mensal
await fs.writeFile(outFile, result.base64img)
await kill.sendImageAsSticker(from, `data:${mimetype};base64,${result.base64img}`)
await kill.reply(from, 'Certifique-se de evitar usar isso quando não precisar,', id)
} catch(err) {
console.log(err)
await kill.reply(from, 'Ups! Alguma coisa deu errado nesse comando!', id)
}
}
break
case 'stickergif':
case 'stikergif':
case 'gif':
if (isMedia) {
if (mimetype === 'video/mp4' && message.duration < 15 || mimetype === 'image/gif' && message.duration < 15) {
var mediaData = await decryptMedia(message, uaOverride)
kill.reply(from, mess.wait, id)
var filename = `./lib/media/stickergif.${mimetype.split('/')[1]}`
await fs.writeFileSync(filename, mediaData)
await exec(`gify ${filename} ./lib/media/stickergf.gif --fps=15 --scale=256:256`, async function (error, stdout, stderr) {
var gif = await fs.readFileSync('./lib/media/stickergf.gif', { encoding: "base64" })
await kill.sendImageAsSticker(from, `data:image/gif;base64,${gif.toString('base64')}`)
.catch(() => {
kill.reply(from, 'Aff! A conversão obteve erros, talvez seja o tamanho do gif ou seu peso.', id)
})
})
} else {
kill.reply(from, `Caso receba isso considere 2 motivos.\n\n1 - Isso não é um gif ou video.\n\n2 - O gif ou video tem mais de 15 segundos, passando do limite que posso converter`, id)
}
} else if (quotedMsg) {
if (quotedMsg.mimetype == 'video/mp4' && quotedMsg.duration < 15 || quotedMsg.mimetype == 'image/gif' && quotedMsg.duration < 15) {
var mediaData = await decryptMedia(quotedMsg, uaOverride)
kill.reply(from, mess.wait, id)
var filename = `./lib/media/stickergif.${quotedMsg.mimetype.split('/')[1]}`
await fs.writeFileSync(filename, mediaData)
await exec(`gify ${filename} ./lib/media/stickergf.gif --fps=15 --scale=256:256`, async function (error, stdout, stderr) {
var gif = await fs.readFileSync('./lib/media/stickergf.gif', { encoding: "base64" })
await kill.sendImageAsSticker(from, `data:image/gif;base64,${gif.toString('base64')}`)
.catch(() => {
kill.reply(from, 'Aff! A conversão obteve erros, talvez seja o tamanho do gif ou seu peso.', id)
})
})
} else {
kill.reply(from, `Caso receba isso considere 2 motivos.\n\n1 - Isso não é um gif ou video.\n\n2 - O gif ou video tem mais de 15 segundos, passando do limite que posso converter.`, id)
}
} else {
kill.reply(from, mess.error.St, id)
}
break
case 'simg':
if (isMedia && type === 'image') {
const mediaData = await decryptMedia(message, uaOverride)
kill.reply(from, 'Aguarde, leva mais de 20 segundos.\n\n *NÃO USE NOVAMENTE* até eu terminar, caso contrario, as funções todas serão bloqueadas por IP.', id)
const sendres = (results) => {
const ttile = results[0].title.replace('<span>', '').replace('</span>', '')
const ttscig = results[1].title.replace('<span>', '').replace('</span>', '')
kill.reply(from, `*${ttile}*\n\n*Titulo >* ${ttscig}\n\n${results[1].url}`, id)
console.log(results)
}
var seaimg = './lib/media/img/imagesearch.jpg'
await fs.writeFile(seaimg, mediaData)
const upimg = await imgbbUploader("API DA IMGBB", seaimg) // Bote uma api do imgbb pras suas fotos n irem pra minha conta
console.log(upimg.url)
await sleep(10000)
const resimg = await imgsearch(upimg.url, sendres)
} else {
await kill.reply(from, 'Amigo(a), isso somente funciona com imagens.', id)
}
break
case 'upimg':
if (isMedia && type === 'image') {
const mediaData = await decryptMedia(message, uaOverride)
var uplimg = './lib/media/img/imageupl.jpg'
await fs.writeFile(uplimg, mediaData)
const sdimg = await imgbbUploader("API DO SITE IMGBB", uplimg) // Bote uma api do imgbb pras suas fotos n irem pra minha conta
console.log(sdimg.url_viewer)
await kill.reply(from, `*OBS!* _Essa link tem duração de 7 dias, após isso a imagem será automaticamente deletada do servidor._\n\n${sdimg.url_viewer}`, id)
} else {
await kill.reply(from, 'Amigo(a), isso somente funciona com imagens.', id)
}
break
case 'makesticker':
if (args.length == 0) return kill.reply(from, 'Faltou algo para usar de referência!', id)
const stkm = await fetch(`http://api.fdci.se/rep.php?gambar=${body.slice(7)}`)
const stimg = await stkm.json()
let stkfm = stimg[Math.floor(Math.random() * stimg.length) + 1]
console.log(stkfm)
await kill.sendStickerfromUrl(from, stkfm)
.catch(() => {
kill.reply(from, 'Nenhuma imagem recebida ou servidor offline, tente mais tarde.', id)
})
break
case 'morte':
case 'death':
if (args.length == 0) return kill.reply(from, 'Coloque um nome, apenas um, nada de sobrenome ou nomes inteiros, ainda mais por sua segurança!', id)
const predea = await axios.get(`https://api.agify.io/?name=${args[0]}`)
await kill.reply(from, `Pessoas com este nome "${predea.data.name}" tendem a morrer aos ${predea.data.age} anos de idade.`, id)
break
case 'oculto':
if (!isGroupMsg) return kill.reply(from, 'Apenas grupos!', id)
const eur = await kill.getGroupMembers(groupId)
const surpresa = eur[Math.floor(Math.random() * eur.length)]
console.log(surpresa.id)
var xvid = ["Negoes branquelos e feministas", `${pushname} se depilando na banheira`, `${pushname} comendo meu cuzinho`, `${pushname} quer me comer o que fazer?`, "lolis nuas e safadas", "Ursinhos Mansos Peludos e excitados", "mae do adm cozida na pressao", "Buceta de 500 cm inflavel da boneca chinesa lolita company", "corno manso batendo uma pra mim com meu rosto na webcam", "tigresa vip da buceta de mel", "belle delphine dando o cuzinho no barzinho da esquina", "fazendo anal no negao", "africanos nus e chupando pau", "anal africano", "comendo a minha tia", "lgbts fazendo ahegao", "adm gostoso tirando a roupa", "gays puxando o intestino pra fora", "Gore de porno de cachorro", "anoes baixinhos do pau grandao", "Anões Gays Dotados Peludos", "anões gays dotados penetradores de botas", "Ursinhos Mansos Peludos", "Jailson Mendes", "Vendo meu Amigo Comer a Esposa", "Golden Shower"]
const surpresa2 = xvid[Math.floor(Math.random() * xvid.length)]
await kill.sendTextWithMentions(from, `*EQUIPE ❌VIDEOS*\n\n_Caro usuário @${surpresa.id.replace(/@c.us/g, '')} ..._\n\n_Sou da administração do Xvideos e nós percebemos que você não entrou em sua conta por mais de 2 semanas e decidimos checar pra saber se está tudo OK com o(a) nosso(a) usuário(a) mais ativo(a)._ \n\n_Desde a última vez que você visitou nosso site, você procurou mais de centenas de vezes por_ *"${surpresa2}"* _(acreditamos ser sua favorita), viemos dizer que elas foram adicionadas e temos certeza que você irá gostar bastante._ \n_Esperamos você lá!_\n\n_Para o nosso usuário(a) favorito(a), com carinho, Equipe Xvideos._`)
await sleep(2000)
break
case 'gender':
case 'genero':
if (args.length == 0) return kill.reply(from, 'Coloque um nome, apenas um, nada de sobrenome ou nomes inteiros, ainda mais por sua segurança!', id)
const seanl = await axios.get(`https://api.genderize.io/?name=${args[0]}`)
const gender = seanl.data.gender.replace('female', 'mulheres').replace('male', 'homens')
await kill.reply(from, `O nome "${seanl.data.name}" é mais usado por ${gender}.`, id)
break
case 'detector' :
if (!isGroupMsg) return kill.reply(from, 'Apenas grupos!', id)
await kill.reply(from, 'Calculando foto dos participantes do grupo...', id)
await sleep(3000)
const eu = await kill.getGroupMembers(groupId)
const gostosa = eu[Math.floor(Math.random() * eu.length)]
console.log(gostosa.id)
await kill.sendTextWithMentions(from, `*DETECTOR DE GOSTOSAS👩⚕️*\n\n*pi pi pi pi* \n*pipipipi🚨🚨🚨pipipipi🚨🚨🚨pipipipi🚨🚨🚨pipi*\n\n@${gostosa.id.replace(/@c.us/g, '')} *PARADA(O) AÍ🖐*\n\n*VOCÊ ACABA DE RECEBER DUAS MULTAS*\n\n*1 por não dar bom dia,boa tarde,boa noite e outra por ser muito*\n\n*gostosa(o)*\n\n*valor da multa:*\n*FOTO DA TETINHA NO PV kkkkk*`)
await sleep(2000)
break
case 'math':
if (args.length == 0) return kill.reply(from, 'Você não especificou uma conta matematica.', id)
const mtk = body.slice(6)
if (typeof math.evaluate(mtk) !== "number") {
kill.reply(from, `Você definiu mesmo uma conta? Isso não parece uma.`, id)
} else {
kill.reply(from, `_A equação:_\n\n*${mtk}*\n\n_tem resultado de:_\n\n*${math.evaluate(mtk)}*`, id)
}
break
case 'inverter':
if (args.length == 0) return kill.reply(from, 'Você não especificou uma frase para ser invertida.', id)
const inver = body.slice(10).split('').reverse().join('')
await kill.reply(from, inver, id)
break
case 'contar':
if (args.length == 0) return kill.reply(from, 'Isso possui 0 letras, afinal, não há texto.', id)
const count = body.slice(8).length
await kill.reply(from, `O texto possui ${count} letras.`, id)
break
case 'giphy':
gark = body.trim().split(/ +/).slice(1)
const link = gark.length !== 0 ? gark[0] : ''
if (gark.length !== 1) return kill.reply(from, `Ownn, você esqueceu de inserir o link?`, id)
const isGiphy = link.match(new RegExp(/https?:\/\/(www\.)?giphy.com/, 'gi'))
const isMediaGiphy = link.match(new RegExp(/https?:\/\/media.giphy.com\/media/, 'gi'))
if (isGiphy) {
const getGiphyCode = link.match(new RegExp(/(\/|\-)(?:.(?!(\/|\-)))+$/, 'gi'))
if (!getGiphyCode) { return kill.reply(from, 'Que peninha! O código de download dele está distante demais, mas talvez se você tentar novamente *apenas mais 1 vez...*', id) }
const giphyCode = getGiphyCode[0].replace(/[-\/]/gi, '')
const smallGifUrl = 'https://media.giphy.com/media/' + giphyCode + '/giphy-downsized.gif'
kill.sendGiphyAsSticker(from, smallGifUrl)
.catch((err) => kill.reply(from, `Um passarinho me disse que esse erro está relacionado ao envio do sticker...`, id))
} else if (isMediaGiphy) {
const gifUrl = link.match(new RegExp(/(giphy|source).(gif|mp4)/, 'gi'))
if (!gifUrl) { return kill.reply(from, 'Que peninha! O código de download dele está distante demais, mas talvez se você tentar novamente *apenas mais 1 vez...*', id) }
const smallGifUrl = link.replace(gifUrl[0], 'giphy-downsized.gif')
kill.sendGiphyAsSticker(from, smallGifUrl)
.catch(() => {
kill.reply(from, `Um passarinho me disse que esse erro está relacionado ao envio do sticker...`, id)
})
} else {
await kill.reply(from, 'Desculpa, mas eu só posso aceitar links do giphy.', id)
}
break
case 'msg':
if (args.length == 0) return kill.reply(from, 'Você esqueceu de inserir uma mensagem... e.e', id)
await kill.sendText(from, `${body.slice(5)}`)
break
case 'id':
if (!isGroupMsg) return kill.reply(from, mess.error.Gp, id)
kill.reply(from, `A ID desse grupo é ${groupId}`, id)
break
case 'fake':
if (isGroupMsg && isGroupAdmins) {
if (args.length !== 1) return kill.reply(from, 'Você esqueceu de colocar se quer ativado [on], ou desativado [off].', id)
if (args[0] == 'on') {
faki.push(chatId)
fs.writeFileSync('./lib/fake.json', JSON.stringify(faki))
kill.reply(from, 'Anti-Fakes habilitado.', id)
} else if (args[0] == 'off') {
let yath = faki.indexOf(chatId)
faki.splice(yath, 1)
fs.writeFileSync('./lib/fake.json', JSON.stringify(faki))
kill.reply(from, 'Anti-fakes desabilitado.', id)
}
} else if (isGroupMsg && isOwner) {
if (args.length !== 1) return kill.reply(from, 'Você esqueceu de colocar se quer ativado [on], ou desativado [off].', id)
if (args[0] == 'on') {
faki.push(chatId)
fs.writeFileSync('./lib/fake.json', JSON.stringify(faki))
kill.reply(from, 'Anti-Fakes habilitado.', id)
} else if (args[0] == 'off') {
let yath = faki.indexOf(chatId)
faki.splice(yath, 1)
fs.writeFileSync('./lib/fake.json', JSON.stringify(faki))
kill.reply(from, 'Anti-fakes desabilitado.', id)
}
} else {
kill.reply(from, mess.error.Ga, id)
}
break
case 'blacklist':
if (isGroupMsg && isGroupAdmins) {
if (args.length !== 1) return kill.reply(from, 'Defina entre on e off!', id)
if (args[0] == 'on') {
bklist.push(chatId)
fs.writeFileSync('./lib/blacklist.json', JSON.stringify(bklist))
kill.reply(from, 'Anti números acionado.\nUse /bklist (Número) para adicionar números.', id)
} else if (args[0] == 'off') {
let exclu = bklist.indexOf(chatId)
bklist.splice(exclu, 1)
fs.writeFileSync('./lib/blacklist.json', JSON.stringify(bklist))
kill.reply(from, 'Anti números offline.', id)
}
} else if (isGroupMsg && isOwner) {
if (args.length !== 1) return kill.reply(from, 'Defina entre on e off!', id)
if (args[0] == 'on') {
bklist.push(chatId)
fs.writeFileSync('./lib/blacklist.json', JSON.stringify(bklist))
kill.reply(from, 'Anti números acionado.\nUse /bklist (Número) para adicionar números.', id)
} else if (args[0] == 'off') {
let exclu = bklist.indexOf(chatId)
bklist.splice(exclu, 1)
fs.writeFileSync('./lib/blacklist.json', JSON.stringify(bklist))
kill.reply(from, 'Anti números offline.', id)
}
} else {
kill.reply(from, mess.error.Ga, id)
}
break
case 'bklist':
if (isGroupMsg && isGroupAdmins) {
if (args[0] == 'on') {
if (args.length == 0) return kill.reply(from, 'Você deve definir [on e off] e em seguida o número da pessoa.', id)
const bkls = body.slice(11) + '@c.us'
atbk.push(bkls)
fs.writeFileSync('./lib/anti.json', JSON.stringify(atbk))
await kill.reply(from, 'Número adicionado a black-list', id)
} else if (args[0] == 'off') {
if (args.length == 0) return kill.reply(from, 'Você deve definir [on e off] e em seguida o número da pessoa.', id)
const bkls = body.slice(11) + '@c.us'
let blks = atbk.indexOf(bkls)
atbk.splice(blks, 1)
fs.writeFileSync('./lib/anti.json', JSON.stringify(atbk))
await kill.reply(from, 'Número removido da black-list', id)
} else {
await kill.reply(from, 'Você deve definir [on e off] e em seguida o número da pessoa.', id)
}
} else if (isGroupMsg && isOwner) {
if (args[0] == 'on') {
if (args.length == 0) return kill.reply(from, 'Você deve definir [on e off] e em seguida o número da pessoa.', id)
const bkls = body.slice(11) + '@c.us'
atbk.push(bkls)
fs.writeFileSync('./lib/anti.json', JSON.stringify(atbk))
await kill.reply(from, 'Número adicionado a black-list', id)
} else if (args[0] == 'off') {
if (args.length == 0) return kill.reply(from, 'Você deve definir [on e off] e em seguida o número da pessoa.', id)
const bkls = body.slice(11) + '@c.us'
let blks = atbk.indexOf(bkls)
atbk.splice(blks, 1)
fs.writeFileSync('./lib/anti.json', JSON.stringify(atbk))
await kill.reply(from, 'Número removido da black-list', id)
} else {
await kill.reply(from, 'Você deve definir [on e off] e em seguida o número da pessoa.', id)
}
} else {
kill.reply(from, mess.error.Ga, id)
}
break
case 'onlyadms':
onar = body.trim().split(/ +/).slice(1)
if (!isGroupMsg) return kill.reply(from, mess.error.Gp, id)
if (!isGroupAdmins) return kill.reply(from, mess.error.Ga, id)
if (!isBotGroupAdmins) return kill.reply(from, mess.error.Ba, id)
if (onar.length !== 1) return kill.reply(from, `Você esqueceu de colocar se quer ativado [On], ou desativado [Off].`, id)
if (onar[0] == 'on') {
kill.setGroupToAdminsOnly(groupId, true).then(() => kill.sendText(from, 'Aqui está a prova de poder dos ademiros!\nO silenciador :O'))
} else if (onar[0] == 'off') {
kill.setGroupToAdminsOnly(groupId, false).then(() => kill.sendText(from, 'E os membros comuns podem voltar a badernar! e.e'))
} else {
kill.reply(from, `Você esqueceu de colocar se quer ativado [On], ou desativado [Off].`, id)
}
break
case 'legiao':
if (isGroupMsg) return kill.reply(from, 'Pode ser que esse grupo não permita links, então use esse comando no PV okay?', id)
kill.sendLinkWithAutoPreview(from, 'https://chat.whatsapp.com/H53MdwhtnRf7TGX1VJ2Jje', 'Que otimo que se interessou pelo Legião Z!\nAi está nosso grupo!', id)
break
case 'revoke':
if (!isGroupMsg) return kill.reply(from, mess.error.Gp, id)
if (!isGroupAdmins) return kill.reply(from, mess.error.Ga, id)
if (!isBotGroupAdmins) return kill.reply(from, mess.error.Ba, id)
await kill.revokeGroupInviteLink(groupId).then(() => kill.reply(from, 'Prontinho, sua ordem foi realizada! e.e', id))
break
case 'slogan':
if (args.length == 0) return kill.reply(from, 'Cade a frase?', id)
const slog = await axios.get(`http://api.haipbis.xyz/randomcooltext?text=${body.slice(8)}`)
await kill.sendFileFromUrl(from, slog.data.image, slog.data.text, 'Elegante não é?', id)
break
case 'setimage':
if (!isGroupMsg) return kill.reply(from, mess.error.Gp, id)
if (!isGroupAdmins) return kill.reply(from, mess.error.Ga, id)
if (!isBotGroupAdmins) return kill.reply(from, mess.error.Ba, id)
if (isMedia && type == 'image' || isQuotedImage) {
const dataMedia = isQuotedImage ? quotedMsg : message
const _mimetype = dataMedia.mimetype
const mediaData = await decryptMedia(dataMedia, uaOverride)
const imageBase64 = `data:${_mimetype};base64,${mediaData.toString('base64')}`
const picgp = await kill.getProfilePicFromServer(chat.id)
if (picgp == undefined) {
var backup = errorurl
} else {
var backup = picgp
}
await kill.sendFileFromUrl(from, backup, 'group.png', 'Para caso você mude de ideia...', id)
await kill.setGroupIcon(groupId, imageBase64)
} else if (args.length == 1) {
if (!isUrl(url)) { await kill.reply(from, 'Tem certeza que isso é um link apenas para a foto?', id) }
const picgpo = await kill.getProfilePicFromServer(chat.id)
if (picgpo == undefined) {
var back = errorurl
} else {
var back = picgpo
}
await kill.sendFileFromUrl(from, back, 'group.png', 'Caso você mude de ideia...', id)
kill.setGroupIconByUrl(groupId, url).then((r) => (!r && r !== undefined)
? kill.reply(from, 'É o que eu pensava, não existem fotos nesse link, ou o link contem fotos demais.', id)
: kill.reply(from, 'Isso! Agora o grupo está de cara nova haha!', id))
} else {
kill.reply(from, `Acho que você esta usando errado em!`)
}
break
case 'img':
if (quotedMsg && quotedMsg.type == 'sticker') {
const mediaData = await decryptMedia(quotedMsg)
kill.reply(from, `Só esperar, pode levar um tempinho...`, id)
const stickerImage = `data:${quotedMsg.mimetype};base64,${mediaData.toString('base64')}`
await kill.sendFile(from, stickerImage, '', 'Aproveite, aqui está sua foto! :D', id)
} else if (!quotedMsg) return kill.reply(from, `Desculpe, isso é somente para stickers...`, id)
break
case 'randomanime':
const nime2 = await randomNimek('anime')
console.log(nime2.data)
await kill.sendFileFromUrl(from, nime2, ``, 'Ui Ui...', id)
break
case 'frase':
if (double == 1) {
const skya = await axios.get('https://mhankbarbar.tech/api/quotesnime/random').json()
const quot = skya.data.data.quote
kill.reply(from, mess.wait, id)
await sleep(5000)
translate(quot, 'pt')
.then((quote) => kill.reply(from, `➸ *Frase* : ${quote}\n➸ *Personagem* : ${skya.data.data.chara}\n➸ *Anime* : ${skya.data.data.anime}`, id))
} else if (double == 2) {
const aiquote = await axios.get("http://inspirobot.me/api?generate=true")
await kill.sendFileFromUrl(from, aiquote.data, 'quote.jpg', '~Não entendi nada, mas vamos seguir o roteiro...~\n\n❤️' , id )
}
break
case 'make':
if (args.length == 0) return kill.reply(from, `Você precisa inserir uma frase após o comando.`, id)
const nulisq = body.slice(6)
const nulisp = await tulis(nulisq)
await kill.sendImage(from, `${nulisp}`, '', 'Belo diário este seu em amigo...', id)
.catch(() => {
kill.reply(from, 'Que peninha, a imagem não quis enviar ou o servidor negou o acesso...', id)
})
break
case 'neko':
const nekol = Math.floor(Math.random() * 4) + 1
if (nekol == 1) {
const neko5 = await axios.get(`https://nekos.life/api/v2/img/kemonomimi`)
await kill.sendFileFromUrl(from, neko5.data.url, ``, `Nekoooo chann`, id)
} else if (nekol == 2) {
const neko2 = await axios.get(`https://nekos.life/api/v2/img/neko`)
await kill.sendFileFromUrl(from, neko2.data.url, ``, `Nekooo`, id)
} else if (nekol == 3) {
const neko3 = await axios.get(`https://nekos.life/api/v2/img/ngif`)
await kill.sendFileFromUrl(from, neko3.data.url, ``, `Nekooo`, id)
} else if (nekol == 4) {
const neko4 = await axios.get(`https://nekos.life/api/v2/img/fox_girl`)
await kill.sendFileFromUrl(from, neko4.data.url, ``, `Nekooo`, id)
}
break
case 'image':
if (args.length == 0) return kill.reply(from, 'Faltou um nome!', id)
const linp = await fetch(`http://api.fdci.se/rep.php?gambar=${body.slice(7)}`)
const pint = await linp.json()
let erest = pint[Math.floor(Math.random() * pint.length) + 1]
console.log(erest)
await kill.sendFileFromUrl(from, erest, '', 'Havia muitas mas espero que curta a imagem que eu escolhi ^^!', id)
.catch(() => {
kill.reply(from, 'Nenhuma imagem recebida ou servidor offline, tente mais tarde.', id)
})
break
case 'yaoi':
const yam = await fetch(`http://api.fdci.se/rep.php?gambar=yaoi`)
const yaoi = await yam.json()
let flyaoi = yaoi[Math.floor(Math.random() * yaoi.length) + 1]
await kill.sendFileFromUrl(from, flyaoi, '', 'Tururu...', id)
.catch(() => {
kill.reply(from, 'Nenhuma imagem recebida ou servidor offline, tente mais tarde.', id)
})
break
case 'life':
const dia = await axios.get(`https://docs-jojo.herokuapp.com/api/fml`)
var acon = dia.data.result.fml
await sleep(5000)
translate(acon, 'pt')
.then((lfts) => kill.reply(from, lfts, id))
break
case 'fox':
const fox = await axios.get(`https://some-random-api.ml/img/fox`)
await kill.sendFileFromUrl(from, fox.data.link, ``, 'Que raposa lindinha <3', id)
break
case 'wiki':
if (args.length == 0) return kill.reply(from, 'Por favor, escreva corretamente.', id)
const wiki = await axios.get(`https://docs-jojo.herokuapp.com/api/wiki?q=${body.slice(6)}`)
var wikit = wiki.data.result
console.log(wikit)
kill.reply(from, mess.wait, id)
await sleep(5000)
translate(wikit, 'pt')
.then((resulta) => kill.reply(from, resulta, id))
break
case 'nasa':
if (args[0] == '-data') {
const nasa = await axios.get(`https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY&date=${args[1]}`)
console.log(nasa.data.title)
const explic = nasa.data.explanation
await sleep(4000)
translate(explic, 'pt')
.then((result) => kill.sendFileFromUrl(from, `${nasa.data.url}`, '', `Titulo: ${nasa.data.title}\n\nData: ${nasa.data.date}\n\nMateria: ${result}`, id))
} else {
const nasa = await axios.get(`https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY`)
console.log(nasa.data.title)
const explic = nasa.data.explanation
await sleep(4000)
translate(explic, 'pt')
.then((result) => kill.sendFileFromUrl(from, `${nasa.data.url}`, '', `Titulo: ${nasa.data.title}\n\nData: ${nasa.data.date}\n\nMateria: ${result}`, id))
}
break
case 'stalkig':
if (args.length == 0) return kill.reply(from, 'Cade o username né?', id)
const ig = await axios.get(`http://arugaz.my.id/api/media/stalkig?user=${body.slice(9)}`)
var insta = ig.data.result.biography
await kill.sendFileFromUrl(from, `${ig.data.result.profile_picture}`, ``, `Username: ${ig.data.result.username}\n\nNome: ${ig.data.result.fullname}\n\nbio: ${insta}\n\nSeguidores: ${ig.data.result.followers}\n\nSeguindo: ${ig.data.followings}`, id)
break
case 'stalktw':
if (args.length == 0) return kill.reply(from, 'Cade o username né?', id)
const tw = await axios.get(`http://arugaz.my.id/api/media/stalktwitt?user=${body.slice(9)}`)
var insta = tw.data.result.biography
await kill.sendFileFromUrl(from, `${tw.data.result.profile_picture}`, ``, `Username: ${tw.data.result.username}\n\nNome: ${tw.data.result.fullname}\n\nbio: ${insta}\n\nSeguidores: ${tw.data.result.followers}\n\nSeguindo: ${tw.data.followings}`, id)
break
case 'twitter':
if (args.length == 0) return kill.reply(from, 'Cade o link né?', id)
const twi = await axios.get(`http://arugaz.my.id/api/media/twvid?url=${body.slice(4)}`)
await kill.sendFileFromUrl(from, twi.data.result.videos, ``, 'É um otimo video haha!\n~Mas o que diabos foi isso...~', id)
.catch(() => {
kill.reply(from, 'Essa não! Impediram meu acesso!\nQue desalmados!', id)
})
break
case 'ig':
if (args.length == 0) return kill.reply(from, 'Cade o link né?', id)
const iga = await axios.get(`https://arugaz.my.id/api/media/ig?url=${body.slice(4)}`)
await kill.sendFileFromUrl(from, iga.data.result, ``, 'É um otimo video haha!\n~Mas o que diabos foi isso...~', id)
.catch(() => {
kill.reply(from, 'Essa não! Impediram meu acesso!\nQue desalmados!', id)
})
break
case 'fb':
if (args.length == 0) return kill.reply(from, 'Você esqueceu de inserir um link do facebook?', id)
const fb = await axios.get(`http://arugaz.my.id/api/media/facebook?url=${body.slice(4)}`)
const fbdw = fb.data.result.linkSD
await kill.sendFileFromUrl(from, fbdw, 'video.mp4', 'Excelente video!\n~Mas o que diabos aconteceu?...~', id)
.catch(() => {
kill.reply(from, 'Minha nossa, algum tipo de força maligna me impediu de terminar o comando!', id)
})
break
case 'mp3':
if (args.length == 0) return kill.reply(from, 'Você usou incorretamente.', id)
axios.get(`http://st4rz.herokuapp.com/api/yta2?url=${body.slice(5)}`)
.then(async(rest) => {
var m3pa = rest.data.result
var m3ti = rest.data.title
var m3tu = rest.data.thumb
var m3fo = rest.data.ext
await kill.sendFileFromUrl(from, m3tu, '', `Titulo: ${m3ti}\nFormato:${m3fo}\n\nEspero que eu tenha acertado e...agora é so esperar! Mas evite novamente usar até que eu termine emm!`, id)
await kill.sendFileFromUrl(from, m3pa, '', '', id)
})
break
case 'mp4':
if (args.length == 0) return kill.reply(from, 'Você usou incorretamente.', id)
axios.get(`http://st4rz.herokuapp.com/api/ytv2?url=${body.slice(5)}`)
.then(async(rest) => {
var mp4 = rest.data.result
var tmp4 = rest.data.title
var m4tu = rest.data.thumb
var m4fo = rest.data.ext
await kill.sendFileFromUrl(from, m4tu, '', `Titulo: ${tmp4}\nFormato:${m4fo}\n\nEspero que eu tenha acertado e...agora é so esperar! Mas evite novamente usar até que eu termine emm!`, id)
await kill.sendFileFromUrl(from, mp4, `video.mp4`, tmp4, id)
})
break
case 'video':
if (args.length == 0) return kill.reply(from, 'Você usou incorretamente.', id)
axios.get(`https://arugaz.my.id/api/media/ytsearch?query=${body.slice(7)}`)
.then(async (res) => {
const vyre = res.data.result[0].uploadDate
if (vyre == '' || vyre == 'null' || vyre == null || vyre == undefined || vyre == 'undefined') {
var videore = 'Indefinido'
} else if (vyre.endsWith('years ago')) {
var videore = vyre.replace('years ago', 'Anos atrás')
} else if (vyre.endsWith('hours ago')) {
var videore = vyre.replace('hours ago', 'Horas atrás')
} else if (vyre.endsWith('minutes ago')) {
var videore = vyre.replace('minutes ago', 'Minutos atrás')
} else if (vyre.endsWith('day ago')) {
var videore = vyre.replace('day ago', 'Dia atrás')
} else if (vyre.endsWith('months ago')) {
var videore = vyre.replace('months ago', 'Meses atrás')
} else if (vyre.endsWith('seconds ago')) {
var videore = vyre.replace('seconds ago', 'Segundos atrás')
}
const size = await axios.get(`http://st4rz.herokuapp.com/api/ytv?url=http://youtu.be/${res.data.result[0].id}`)
const fsize = size.data.filesize.replace(' MB', '').replace('Download ', 'Impossivel calcular')
console.log(fsize)
const impo = size.data.filesize.replace('Download ', 'um peso muito superior que não posso calcular')
if (fsize >= 16.0 || size.data.filesize.endsWith('Download ') || size.data.filesize.endsWith('GB')) {
kill.reply(from, `Desculpe, para evitar banimentos do WhatsApp, o limite de envio de videos é de 16MB, e esse possui ${impo.replace(' ', ' ')}.`, id)
} else {
await kill.sendFileFromUrl(from, `${res.data.result[0].thumbnail}`, ``, `Titulo: ${res.data.result[0].title}\n\nDuração: ${res.data.result[0].duration} segundos\n\nFoi feito a: ${videore}\n\nVisualizações: ${res.data.result[0].viewCount}\n\nPeso: ${size.data.filesize}\n\nEspero que eu tenha acertado e...agora é so esperar! Mas evite usar novamente até que eu termine emm!`, id)
console.log(res.data.result[0].title)
axios.get(`http://st4rz.herokuapp.com/api/ytv2?url=https://youtu.be/${res.data.result[0].id}`)
.then(async(rest) => {
var mp4 = rest.data.result
var tmp4 = rest.data.title
await kill.sendFileFromUrl(from, mp4, `video.mp4`, tmp4, id)
})
}
})
break
case 'play':
if (args.length == 0) return kill.reply(from, 'Você usou incorretamente.', id)
axios.get(`https://arugaz.my.id/api/media/ytsearch?query=${body.slice(6)}`)
.then(async (res) => {
const pyre = res.data.result[0].uploadDate
if (pyre == '' || pyre == 'null' || pyre == null || pyre == undefined || pyre == 'undefined') {
var playre = 'Indefinido'
} else if (pyre.endsWith('years ago')) {
var playre = pyre.replace('years ago', 'Anos atrás')
} else if (pyre.endsWith('hours ago')) {
var playre = pyre.replace('hours ago', 'Horas atrás')
} else if (pyre.endsWith('minutes ago')) {
var playre = pyre.replace('minutes ago', 'Minutos atrás')
} else if (pyre.endsWith('day ago')) {
var playre = pyre.replace('day ago', 'Dia atrás')
} else if (pyre.endsWith('months ago')) {
var playre = pyre.replace('months ago', 'Meses atrás')
} else if (pyre.endsWith('seconds ago')) {
var playre = pyre.replace('seconds ago', 'Segundos atrás')
}
const asize = await axios.get(`http://st4rz.herokuapp.com/api/yta?url=http://youtu.be/${res.data.result[0].id}`)
const afsize = asize.data.filesize.replace(' MB', '')
console.log(afsize)
if (afsize >= 16.0 || asize.data.filesize.endsWith('GB')) {
kill.reply(from, `Desculpe, para evitar banimentos do WhatsApp, o limite de envio de audios é de 16MB, e esse possui ${asize.data.filesize}.`, id)
} else {
await kill.sendFileFromUrl(from, `${res.data.result[0].thumbnail}`, ``, `Titulo: ${res.data.result[0].title}\n\nDuração: ${res.data.result[0].duration} segundos\n\nFoi feito a: ${playre}\n\nVisualizações: ${res.data.result[0].viewCount}\n\nEspero que eu tenha acertado e...agora é so esperar! Mas evite usar novamente até que eu termine emm!`, id)
console.log(res.data.result[0].title)
axios.get(`http://st4rz.herokuapp.com/api/yta2?url=http://youtu.be/${res.data.result[0].id}`)
.then(async(rest) => {
var m3pa = rest.data.result
var m3ti = rest.data.title
await kill.sendFileFromUrl(from, m3pa, '', '', id)
})
}
})
break
case 'qr':
const qrco = body.slice(4)
await kill.sendFileFromUrl(from, `https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=${qrco}`, '', 'Sua mensagem foi inserida nesse QRCode, aproveite.\n\nBy KillovSky - Íris.', id)
break
case 'send':
if (args.length == 0) return kill.reply(from, 'Você esqueceu de por um link de imagem haha!', id)
const file = body.slice(6)
if (file.endsWith('.jpg')) {
await kill.sendFileFromUrl(from, file, '', '', id)
.catch(() => {
kill.reply(from, 'Ah! Isso não aparenta ser uma imagem, ou pode ser maior que o esperado...', id)
})
} else if (file.endsWith('.png')) {
await kill.sendFileFromUrl(from, file, '', '', id)
.catch(() => {
kill.reply(from, 'Ah! Isso não aparenta ser uma imagem, ou pode ser maior que o esperado...', id)
})
} else {
kill.reply(from, 'Desculpa, apenas fotos são permitidas, exclusivamente .jpg e .png ^^', id)
}
break
case 'quote':
arks = body.trim().split(/ +/).slice(1)
ark = body.trim().substring(body.indexOf(' ') + 1)
if (arks.length >= 1) {
const quotes = ark.split('|')[0]
const qauth = ark.split('|')[1]
kill.reply(from, 'Entendido! Aguarde a conclusão do comando.!', id)
const quoteimg = await killo.quote(quotes, qauth)
console.log(quoteimg)
await kill.sendFileFromUrl(from, quoteimg, '', 'Compreensivel.', id)
.catch(() => {
kill.reply(from, 'Nossa! Parece que fui negada ao enviar a foto...', id)
})
} else {
kill.reply(from, `Você realmente está usando corretamente?`)
}
break
case 'translate':
if (args.length != 1) return kill.reply(from, `Isso é pequeno demais para ser traduzido...`, id)
if (!quotedMsg) return kill.reply(from, `Você esqueceu de marcar a mensagem para tradução.`, id)
const quoteText = quotedMsg.type == 'chat' ? quotedMsg.body : quotedMsg.type == 'image' ? quotedMsg.caption : ''
kill.reply(from, mess.wait, id)
await sleep(5000)
translate(quoteText, args[0])
.then((result) => kill.reply(from, result, id))
.catch(() => kill.reply(from, 'Bloqueio de IP google, ou erro em tradução...'))
break
case 'tts': // Esse é enormeeeee, fazer o que, sou baiano pra jogar noutro js
if (args.length == 1) return kill.reply(from, 'Compreensivel, mas não usavel, você esqueceu de definir idioma e frase.')
const ttsId = require('node-gtts')('id')
const ttsEn = require('node-gtts')('en')
const ttsJp = require('node-gtts')('ja')
const ttsAr = require('node-gtts')('ar')
const ttsAf = require('node-gtts')('af')
const ttsSq = require('node-gtts')('sq')
const ttsHy = require('node-gtts')('hy')
const ttsCa = require('node-gtts')('ca')
const ttsZh = require('node-gtts')('zh')
const ttsCn = require('node-gtts')('zh-cn')
const ttsTw = require('node-gtts')('zh-tw')
const ttsYu = require('node-gtts')('zh-yue')
const ttsHr = require('node-gtts')('hr')
const ttsCs = require('node-gtts')('cs')
const ttsDa = require('node-gtts')('da')
const ttsNl = require('node-gtts')('nl')
const ttsAu = require('node-gtts')('en-au')
const ttsUk = require('node-gtts')('en-uk')
const ttsUs = require('node-gtts')('en-us')
const ttsEo = require('node-gtts')('eo')
const ttsFi = require('node-gtts')('fi')
const ttsFr = require('node-gtts')('fr')
const ttsEl = require('node-gtts')('el')
const ttsHt = require('node-gtts')('ht')
const ttsHi = require('node-gtts')('hi')
const ttsHu = require('node-gtts')('hu')
const ttsIs = require('node-gtts')('is')
const ttsIt = require('node-gtts')('it')
const ttsKo = require('node-gtts')('ko')
const ttsLa = require('node-gtts')('la')
const ttsLv = require('node-gtts')('lv')
const ttsMk = require('node-gtts')('mk')
const ttsNo = require('node-gtts')('no')
const ttsPl = require('node-gtts')('pl')
const ttsRo = require('node-gtts')('ro')
const ttsSr = require('node-gtts')('sr')
const ttsSk = require('node-gtts')('sk')
const ttsEs = require('node-gtts')('es')
const ttsSp = require('node-gtts')('es-es')
const ttsSu = require('node-gtts')('es-us')
const ttsSw = require('node-gtts')('sw')
const ttsSv = require('node-gtts')('sv')
const ttsTa = require('node-gtts')('ta')
const ttsTh = require('node-gtts')('th')
const ttsTr = require('node-gtts')('tr')
const ttsVi = require('node-gtts')('vi')