-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbot.js
154 lines (134 loc) · 5.32 KB
/
bot.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
const { Client, LocalAuth } = require('whatsapp-web.js')
const qrcode = require('qrcode-terminal')
const colors = require('colors');
const fs = require('fs');
const { exec } = require('child_process');
require('dotenv').config();
function printError(message) {
console.log(colors.red('[*] ' + message));
}
function printInfo(message) {
console.log(colors.yellow('[!] ' + message));
}
function printSuccess(message) {
console.log(colors.green('[+] ' + message));
}
function printCall(sender_contact, call) {
let name = String(sender_contact.pushname);
if (name === 'undefined') {
name = "SEU_NOME_AQUI" // Customize seu nome para retornar no console
}
console.log(colors.blue(`[+] ${name} used ${call}`));
}
//ASCII ART ghost_bo
const banner = `
####### ###### ## ####### ###### ###### ####### ####### ##### #######
## ## ## ## ## ## ## ## ## ## ## ## ## ##
####### ###### ## ####### ## ## ## ####### ###### ## ####### #######
## ## ## ## ## ## ## ## ## ## ## ##
####### ## ####### ####### ###### ###### ####### ####### ## ## ##
`
console.log(colors.rainbow(banner));
printInfo('Initializing the bot...');
const client = new Client({
authStrategy: new LocalAuth(),
puppeteer: {
executablePath: 'PATH_BROWSER' //Adicione um caminho de um browser para gerar um client
}
});
printSuccess('Client ready!')
client.on('qr', qr => {
printInfo('QR Code received, scan it please')
qrcode.generate(qr, {small: true})
});
client.on('authenticated', (session) => printSuccess(`Whatsapp authentication success!`))
client.on('ready', () => printSuccess('Ready to use!'))
client.on('message_create', message => {
if (message.fromMe) {
commands(message);
}
});
// Quando alguem editar uma mensagem esse código é ativado
client.on('message_edit', (message) => {
console.log(`Message received from ${message.from}: ${message.body}`);
const grupo = process.env.GRUPO;
console.log(grupo);
});
// Recupera mensagens apagadas e as envia para o número particular
client.on('message_revoke_everyone', async (after, message) => {
const sender_a = await message.getContact();
const chat_a = await message.getChat();
let name = String(sender_a.pushname);
if (message.fromMe) {
name = "SEU_NOME"; // Customize seu nome para aparecer no console e no seu WhatsApp
};
const t = `Mensagem apagada\nEnviada por: ${name}\nEm: ${chat_a.name}\nConteudo: ${message.body}`;
printInfo(`Mensagem apagada por ${name}, enviando para o pv...`);
console.log(message.id);
client.sendMessage(process.env.PHONE_NUMBER, t);
});
client.initialize();
let jsonData;
fs.readFile('./bot-config.json', 'utf8', (err, data) => {
if (err) {
printError('Error reading config file:', err);
process.exit(1);
}
try {
jsonData = JSON.parse(data);
const loaded_callers = Object.keys(jsonData);
const loaded_callers_values_length = loaded_callers.length;
printSuccess(`Loaded ${loaded_callers_values_length} callers (${loaded_callers})`);
} catch (error) {
printError('Error parsing JSON of config file ', error);
process.exit(1);
}
});
printInfo('Starting WhatsApp authentication...');
const commands = async (message) => {
const callers = jsonData
if (!message.body.includes(' ')) {
message.body += ' '
};
let caller = await message.body.substring(0, message.body.indexOf(" "))
var sender_contact = await message.getContact();
const quotedMsg = await message.getQuotedMessage();
switch (caller) {
//Comando "ping" responde a sua própria mensagem com o texto "pong"
case callers.ping:
printCall(sender_contact, callers.ping);
await message.reply('pong');
break;
//Comando /ls é usado para executar o comando dir na pasta atual do seu bot
case callers.listar:
printCall(sender_contact, callers.listar);
exec('dir', (error, stdout, stderr) => {
if (error) {
console.error(`Erro ao executar o comando: ${error.message}`);
return;
}
if (stderr) {
console.error(`Erro na saída do comando: ${stderr}`);
return;
}
comando = `Saída do comando:\n${stdout}`;
client.sendMessage(process.env.PHONE_NUMBER, comando);
});
break;
//Chamar o comando com /show em uma mensagem de visualização única para enviar para seu contato pessoal
case callers.show:
printCall(sender_contact, callers.show);
if (quotedMsg && quotedMsg.hasMedia) {
const media = await quotedMsg.downloadMedia();
const options = {
media: media,
sendMediaAsSticker: false,
};
await client.sendMessage(process.env.PHONE_NUMBER, media, options);
printSuccess('show responded OK');
};
break;
case callers.teste:
printCall(sender_contact, callers.teste);
}
}