-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
156 lines (144 loc) · 5.55 KB
/
index.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
require('dotenv').config();
const qrcode = require('qrcode-terminal');
const { Client } = require('whatsapp-web.js');
var https = require('follow-redirects').https;
// setup Wolfram|Alpha API
const appid = process.env.APPID;
const WolframAlphaAPI = require('./lib/WolframAlphaAPI.js');
let wraAPI = WolframAlphaAPI(appid);
const invokeKey = 'ros';
const handleShort = require('./handlers/wra/short');
const handleImage = require('./handlers/wra/image');
const handleGoogle = require('./handlers/google/googleHandler');
let sessionLocal = JSON.parse(process.env.WW_SESSION);
console.log(sessionLocal);
const puppeteerOptions = {
headless: true,
args: ["--no-sandbox"],
};
const client = new Client({
puppeteer: puppeteerOptions,
session: sessionLocal
});
client.on('qr', qr => {
qrcode.generate(qr, { small: true });
});
client.on('authenticated', session => {
// Save this session object in WW_SESSION manually to reuse it next time
console.log(JSON.stringify(session));
});
client.on('auth_failure', message => {
// Fired if session restore was unsuccessfull
console.error('AUTHENTICATION FAILURE', message);
});
client.on('ready', () => {
console.log('Client is ready!');
});
client.on('message_create', async message => {
/*console.log('\n---\nNew Message at ' + String(Date()));
console.log('From me? ' + String(message.fromMe));
console.log(message.body);*/
console.log(message);
if (message.body.startsWith('!ros')) {
let text = message.body.substring(2 + invokeKey.length);
console.log(text);
if (text.startsWith('-i ')) {
let query = text.substring(2);
console.log(`Querying image result for ${query}`);
handleImage(message, query, wraAPI);
} else {
console.log(`Querying text result for ${text}`);
handleShort(message, text, wraAPI);
}
} else if (message.body.startsWith('!google ')) {
console.log("You asked Google");
const googleSearch = message.body.slice(8)
handleGoogle(message, googleSearch);
} else if (message.body == '!joke') {
https.get(`https://official-joke-api.appspot.com/random_joke`, function (response) {
var buffer = '';
response.on('data', function (d) {
buffer += d;
}).on('end', function () {
var body;
try {
obj = JSON.parse(buffer);
message.reply(`${obj.setup} \n${obj.punchline}`);
} catch (err) {
return message.reply(err);
}
}).setEncoding('utf8');
});
} else if (message.body.startsWith('!insult')) {
https.get(`https://evilinsult.com/generate_insult.php?lang=en&type=json`, function (response) {
var buffer = '';
response.on('data', function (d) {
buffer += d;
}).on('end', function () {
var body;
try {
body = JSON.parse(buffer);
message.reply(`${body.insult}`);
} catch (err) {
return message.reply(err);
}
}).setEncoding('utf8');
});
} else if (message.body === '!groupinfo') {
let chat = await message.getChat();
if (chat.isGroup) {
message.reply(`
*Group Details*
Name: ${chat.name}
Description: ${chat.description}
Created At: ${chat.createdAt.toString()}
Created By: ${chat.owner.user}
Participant count: ${chat.participants.length}
`);
} else {
message.reply('This command can only be used in a group!');
}
} else if (message.body.startsWith('!compliment')) {
https.get(`https://complimentr.com/api`, function (response) {
var buffer = '';
response.on('data', function (d) {
buffer += d;
}).on('end', function () {
var body;
try {
body = JSON.parse(buffer);
message.reply(`${body.compliment}`);
} catch (err) {
return message.reply(err);
}
}).setEncoding('utf8');
});
} else if (message.body == '!animeq') {
https.get(`https://animechanapi.xyz/api/quotes/random`, function (response) {
console.log(response.data);
});
} else if (message.body.toLowerCase().startsWith('!ansearch ')) {
let str = message.body.slice(9);
let stri = str.replace(/\s/g, "_");
https.get(`https://api.jikan.moe/v3/search/anime?q=${stri}&limit=1`, function (response) {
var buffer = '';
response.on('data', function (d) {
buffer += d;
}).on('end', function () {
var body;
try {
obj = JSON.parse(buffer);
obj = obj.results[0];
if (obj.hasOwnProperty('title')) {
//message.reply(`${response}`);
message.reply(`Title:${obj.title} \nAiring? ${obj.airing}\nDescription:${obj.synopsis}\nEpisodes:${obj.episodes}\nURL:${obj.url}`);
}
else { message.reply("Error! Could not find specified search result!"); }
} catch (err) {
return message.reply(err);
}
}).setEncoding('utf8');
});
}
});
client.initialize();