-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.js
157 lines (147 loc) · 6.27 KB
/
main.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
const Insta = require('./insta.js');
const client = new Insta.Client();
const chatbot = require("node-fetch").default;
const axios = require('axios')
const imageDownloader = require('node-image-downloader')
const { parse } = require("node-html-parser");
const console = require('console');
const fs = require('fs');
///////////////////////// Database ////////////////////////////////////////
// var sqlite3 = require('sqlite3').verbose();
// let db = new sqlite3.Database('./allUserJoin.db', sqlite3.OPEN_READWRITE);
// function insertTo(username){
// db.run('INSERT INTO `userJoin` (`username`) VALUES (?)', [username], function(err) {
// if (err) {
// return console.log(err.message);
// }
// });
// }
///////////////////////// Functions ////////////////////////////////////////
// async function chatCreator(userID) {
// try{
// const user = await client.fetchUser(userID);
// if(!user.privateChat) await user.fetchPrivateChat();
// user.privateChat.sendMessage('به ربات خوش آمدید');
// insertTo(userID);
// }catch(err){}
// }
async function getPostLink(url, chatID) {
try{
url = url.split('?')[0] + 'embed' + '/captioned';
let res = axios.get(url).then(async (response) => {
const root = parse(response.data);
let link = "";
if (response.data.search("video_url") != -1)
link = getVideoLinkFromHtml(response.data);
else
link = root.querySelector('img.EmbeddedMediaImage').getAttribute("src");
while (link.search("&") != -1) {
link = link.replace("&", "&");
}
if(link.search(".mp4?")!=-1){
let server = "https://mudownloader.ir/p.php/";
let urlSending = server+link.split('https://')[1];
sendMessageToUser(chatID, urlSending);
}else{
imageSender(link, chatID);
}
});
}catch(err){}
} //Finish
function getVideoLinkFromHtml(html) {
try{
let crop = "{\"" + html.substring(html.search("video_url"), html.search("video_url") + 1000);
crop = crop.substring(0, crop.search(",")) + "}";
return JSON.parse(crop).video_url;
}catch(err){}
}//Finish
function checkLink(message){
try{
(async ()=>{
const instagramPostLink = message.content;
await getPostLink(instagramPostLink, message.chatID);
})();
}catch(err){}
}//Finish
function sendMessageToUser(chaID, message, type){
client.fetchChat(chaID).then((chat) => {
try{
if(type=='image'){
chat.sendPhoto(message);
try {
fs.rmdirSync('./files/'+chaID, { recursive: true });
}catch (err) {}
}else{
chat.sendMessage(message);
}
}catch(err){}
});
}//Finish
function imageSender(url, chatID){
try{
sendMessageToUser(chatID,'...پست شما در حال ارسال است لطفا کمی صبر کنید');
const filename = url.split("/")[5].split(".mp4?")[0].split(".jpg?")[0].split(".webp?")[0];
const dir = './files/'+chatID+'/';
if (!fs.existsSync(dir)) {
fs.mkdirSync(dir, {
recursive: true
});
}
imageDownloader({
imgs: [
{
uri: url,
filename: filename
}
],
dest: './files/'+chatID+'/',
})
.then((info) => {
if(info[0].path.substr(-4)=='jpeg'){
sendMessageToUser(chatID, './'+info[0].path, 'image');
}
})
.catch((error, response, body) => {
sendMessageToUser(chatID,'😢با عرض پوزش ربات فعلا قادر به دانلوداین پست های(اسلاید) نمیباشد');
})
}catch(err){
}
}//Finish
///////////////////////// Message Control /////////////////////////////////
client.on('connected', async () => {
console.log(`${client.user.username} Is Ready Now For Chats`);
client.on('pendingRequest', async data => {
try{
const myString = Object.values(data);
const ary = myString;
const arry = ary.map((character) => character);
var ss = JSON.stringify(arry);
var parsedData = JSON.parse(ss);
let userid = String(parsedData[1]);
sendMessageToUser(userid,'😁به ربات ما خوش آمدید 😍 چون شما برای اولین بار وارد ربات شدید لطفا لینک پست خود را مجدد ارسال کنیذ');
}catch(err){}
});
});
client.on('messageCreate', (message) => {
try{
let va = 0;
if (message.author.id === client.user.id){
va = 1;
message.markSeen();
}
if(message.content.toLowerCase().includes('help')){
va = 1;
sendMessageToUser(message.chatID,'برای دانلود پست های کافیست لینک پست ها رو کپی کنید و برای ربات ارسال کنید\nاز طریق لینک زیر نیز میتوانید آموزش تصویری ربات را مشاهده\n @mudownloader');
}
if(message.content.split('/')[2]=='www.instagram.com'){
va = 1;
checkLink(message);
}
if(va==0){
sendMessageToUser(message.chatID,'متعصفانه پیام شما برای ربات قابل هضم نیست 🤮 لطفا لینک پست مورد نظرتون رو ارسال کنید 😅(اگر با ربات آشنایی ندارید در پیج آموزش ربات گذاشته شده اون رو مشاهده کنید🧐)');
sendMessageToUser(message.chatID,'لطفا در نظر داشته باید ربات فعلا فقط قادر به دانلود عکس و ویدیو میباشد که عکس به صورت مستقیم و ویدیو به صورت لینک فرستاده میشوند (آموزش دانلود ویدیو و عکس رو میتونید در پیج مشاهده کنید) بعضی از پست ها ب دلیل فرمت نا مشخص دانلود نمیشوند ');
}
}catch(err){}
});
///////////////////////// LogIN ////////////////////////////////////////////
client.login('zizifa_2001', 'mumu1379');