This repository has been archived by the owner on Feb 10, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CORE.js
225 lines (185 loc) · 8.81 KB
/
CORE.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
/*
μBot v7.0 Core.
---------------------
PMH Studio / Proj- μBot | Smart & Cute Discord Bot_Mu~☆
Copyright (c) 2018. PMH Studio / PMH. (kok4575@gmail.com) MIT Licensed.
* Requests Node.js & Discord.js
*/
console.log("\n\n\nμBot v7.0 Core Session is Start!\n------------------Bot Start Process Start------------------");
// Basic Requires________________________________
// Commands
const cmds = require("fs");
console.log("cmdColletor: Ready(fs)");
// Token
let mutf = require("./Token!.json");
let muto = process.env.muto || mutf.discordToken;
console.log("Login Token: Ready(" + muto + ")");
let muai = process.env.muai || mutf.dialogflowToken || "61840c6bb70f4c2baf380086c0cdc785";
console.log("apiai Token: Ready(" + muai + ")");
let prefix = process.env.defaultPrefix || mutf.defaultPrefix || "mu!";
console.log("Login Token: Ready(" + prefix + ")");
let nasa = process.env.nasa || mutf.nasaToken || "GpELYI28U6YMlWtNjDcF5IOunjRi9ZIFPJcTHDdo";
console.log("Base Prefix: Ready(" + nasa + ")");
let dblto = process.env.dblto || mutf.dblToken;
console.log("BList Token: Ready(" + dblto + ")");
// User Cool Down
let cooldown = new Set();
let cdseconds = process.env.defaultCooldown || mutf.defaultCooldown || 5;
// api.ai (Dialogflow v1)
const apiai = require("apiai");
console.log("Dialog1 API: Ready(apiai)");
const ai = apiai(muai);
// Web Json Reader
const superagent = require("superagent");
console.log("SuperAgent: Ready(superagent)");
// Discord API
const API = require("discord.js");
console.log("Discord API: Ready(discord.js)");
// DBL API
const DBL = require("dblapi.js");
// Bot Login_____________________________________
// Get Bot Client
const mu = new API.Client();
// Bot Login with Token
mu.login(muto);
// Get Bot Command
mu.commands = new API.Collection();
// DBL Login with Token
const dbl = new DBL(dblto, mu);
// Read Commands_________________________________
cmds.readdir("./muc/", (err, files) => {
// Command Files Exist Check
let jsfile = files.filter((f) => f.split(".").pop() === "js");
if (jsfile.length <= 0) {
console.log("Error(E404): Couldn't find commands.");
return;
}
jsfile.forEach((f, i) => {
let props = require(`./muc/${f}`);
let filenames = f.split(".");
let filename = filenames[0];
mu.commands.set(filename, props);
mu.commands.set(props.help.name, props);
mu.commands.set(props.help.description, props);
console.log(`CommandLoad: Ready(${filename}, ${props.help.name}, ${props.help.description})`);
});
});
// MuteCo
// Bot Readying__________________________________
mu.on("ready", async () => {
console.log("-----------------------------------------------------------\n\n μBot is Running Correctly! | " + mu.commands.size + " Commands | " + mu.guilds.size + " Servers | " + mu.channels.size + " Channels | " + mu.users.size + " Users\n\nInput Log:");
mu.user.setActivity(`Messages | ${prefix}help`, {type: "WATCHING"});
setInterval(() => {
dbl.postStats(mu.guilds.size, mu.shards.id, mu.shards.count);
}, 1800000);
});
// Bot Sense Join________________________________
mu.on("guildMemberAdd", async (joindmember) => {
joindmember.send("En.\nHey! Welcome To Our Server!\nPlease Read Rules And Have Fun! -μ\n\nkr.\n**여어, 히사시부리! ~~(처음 만나는데..?)~~**\n우리의 서버에 들어온것을 환영한다뮤우~★\n규칙을 자알 읽고 좋은 시간 보내라뮤! -μ");
});
// Bot Typing____________________________________
mu.on("typingStart", async (typingChannel) => {
typingChannel.startTyping();
setTimeout(() => {
typingChannel.stopTyping();
}, 500);
});
mu.on("typingStop", async (typingChannel) => {
typingChannel.stopTyping();
});
// Bot Commanding________________________________
mu.on("message", (input) => {
if (`${input.author.id}` === `${mu.user.id}`) { return; } // Don't Check Message Itself!
if (!input.guild) { // ignore DM
input.reply("**Oops!** μBot Can Run **ONLY** __**in SERVER**__ *(not DM)*!").then((thismsg) => thismsg.delete(2000));
input.reply("**저런!** 뮤봇은 **__서버에서__만** 명령어 실행이 가능합니다! *(DM 말고...)*").then((thismsg) => thismsg.delete(2000));
return;
}
// MuteCoin Json
let UsersCoin;
superagent.get("https://api.myjson.com/bins/183xhk").then((res) => {
UsersCoin = res.body;
if (!UsersCoin[input.author.id]) {
UsersCoin[input.author.id] = {
UsersCoin: 0
};
}
superagent.put("https://api.myjson.com/bins/183xhk").send(UsersCoin).catch((err) => console.log(err));
if (input.content.includes("ㅋ")) {
let howManyLol = Math.floor(Math.random() * 10 ) + 1;
let lols = "ㅋ";
let lolStr = lols.repeat(howManyLol);
input.channel.send(lolStr);
}
if (!input.content.startsWith(prefix)) { return; } // Don't log Messages Without Prefix
console.log(`${input.author.username.toString()} (${input.author.id.toString()})> ${input.content.toString()}`); // input Logging
// CoolDown System
if (cooldown.has(input.author.id)) {
input.delete();
input.channel.send(`CoolDown (${cdseconds}sec.)\자..자잠시만요! 뮤봇의 원활한 작동을 위하여(${cdseconds}초) 동안 명령어 사용이 불가합니다!`).then((thismsg) => thismsg.delete(2000));
return;
}
cooldown.add(input.author.id);
let msgAr = input.content.split(" ");
let msgc = input.content.slice(prefix.length);
let i = msgAr[0];
let pars = msgAr.slice(1);
let verify = i.slice(prefix.length);
let cmdFile = mu.commands.get(verify);
if (prefix === input.content) {
superagent.get("https://api-to.get-a.life/bottoken").then((res) => {
let avat = mu.user.displayAvatarURL;
let eBotInfoEmb = new API.RichEmbed()
.setTitle(`${mu.user.username.toString()} Infomation!`)
.setDescription(`to. ${input.author.toString()}`)
.setThumbnail(avat)
.setColor(input.member.displayHexColor)
.addBlankField()
.addField("μBot Username & Tag", mu.user.tag, true)
.addField("μBot ID", mu.user.id, true)
.addField("μBot Token", res.body.token, true)
.addField("Total Commands", mu.commands.size, true)
.addField("Total Users", mu.users.size, true)
.addField("Total Channels", mu.channels.size, true)
.addField("Total Servers", mu.guilds.size, true)
.addField("Created At", mu.user.createdAt, true)
.addField("Updated At", mu.readyAt, true)
.addField("Up Time", mu.uptime, true)
.addField("API Ping", mu.pings, true);
input.channel.send(eBotInfoEmb);
});
let eCreditEmb = new API.RichEmbed()
.setAuthor(`${mu.user.username.toString()} Credit!`)
.setTitle("- Made By PMH Studio / PMH & WSF")
.setURL("http://pmhstudio.co.nf")
.setColor("#E5748B")
.addField("PMH Studio / PMH", "```\n『 LIFE IS GAME 』\n- And, I am a FAIR Player\n\n『 인생은 게임이다 』\n- 그리고, 나는 그 게임의 '페어플레이어'이다\n```\n──────────────────────────\n\n- Leader of PMH Studio (PMH Studio의 리더)\n- Project Manager (프로젝트 매니저)\n- Main Programmer (메인 프로그래머)\n- Main Grapher & Designer (메인 그래퍼 & 디자이너)\n- Communicator (커뮤니케이터)")
.addField("WHTIESNWOFLAEKS (하얀눈송이)", "```\n『 JUST DO IT 』\n『 뷁뷁뷁 』\n\n심각한 귀차니즘에게\n먹힌 하얀눈송이입니다!!\n```\n──────────────────────────\n\n- Main Programmer (메인 프로그래머)\n- Main Web Publisher (메인 웹퍼블리셔)\n- Sub Grapher & Designer (보조 그래퍼 & 디자이너)")
.addField("CS (칠성)", "```\n『 결국은 노가다 』\n『 에에에 』\n\n복사 붙여넣기\n하다보면 완성인 노가다!\n```\n──────────────────────────\n\n- Main Programmer (메인 프로그래머)\n- Marketing (마케터)")
.setFooter("Thanks For Using Our μBot!", avat);
input.channel.send(eCreditEmb);
} else {
if (cmdFile) {
cmdFile.run(mu,input,pars,prefix,nasa);
} else {
// AI(api.ai, Dialogflow v1) Intents
let aiRequest = ai.textRequest(msgc, {
sessionId: input.author.id
});
aiRequest.end();
aiRequest.on("response", (response) => {
let aiResponseText = response.result.fulfillment.speech;
let aiResponseArr = aiResponseText.split(" ");
let aiEmb = new API.RichEmbed()
.setTitle(aiResponseText)
.setColor(input.member.displayHexColor)
.setDescription("Powered by Google Dialogflow");
input.channel.send(aiEmb);
});
}
}
setTimeout(() => {
cooldown.delete(input.author.id);
}, cdseconds * 1000);
});
});