· 8 years ago · Apr 03, 2018, 08:08 PM
1const Discord = require('discord.js');
2const search = require('youtube-search');
3const bot = new Discord.Client();
4const SQLite = require('better-sqlite3');
5const sql = new SQLite('./score.sqlite');
6
7bot.on('ready', function(){
8 bot.user.setStatus('online')
9 const discord_members = bot.users.map(m => m.toString()).sort();
10 bot.user.setActivity(bot.users.size + ' peoples on this server.', {type: "WATCHING"});
11 const table = sql.prepare("SELECT count(*) FROM sqlite_master WHERE type='table' AND name = 'scores';").get();
12 if (!table['count(*)']) {
13 // If the table isn't there, create it and setup the database correctly.
14 sql.prepare("CREATE TABLE scores (id TEXT PRIMARY KEY, user TEXT, guild TEXT, points INTEGER, level INTEGER);").run();
15 // Ensure that the "id" row is always unique and indexed.
16 sql.prepare("CREATE UNIQUE INDEX idx_scores_id ON scores (id);").run();
17 sql.pragma("synchronous = 1");
18 sql.pragma("journal_mode = wal");
19 }
20 bot.getScore = sql.prepare("SELECT * FROM scores WHERE user = ? AND guild = ?");
21 bot.setScore = sql.prepare("INSERT OR REPLACE INTO scores (id, user, guild, points, level) VALUES (?, ?, ?, ?, ?);");
22 console.log('Logged in as ' + bot.user.tag + '!');
23});
24
25bot.on('message', function(message) {
26 if (message.author.bot) return;
27 if (message.content.indexOf(".") !== 0) return;
28 if (message.channel.type === "dm") return;
29
30 let score;
31 if (message.guild) {
32 score = bot.getScore.get(message.author.id, message.guild.id);
33 if (!score) {
34 score = { id: `${message.guild.id}-${message.author.id}`, user: message.author.id, guild: message.guild.id, points: 0, level: 1 }
35 }
36 score.points++;
37 const curLevel = Math.floor(0.1 * Math.sqrt(score.points));
38 if (score.level < curLevel) {
39 message.reply(`You've leveled up to level **${curLevel}**! Ain't that dandy?`);
40 }
41 bot.setScore.run(score);
42 }
43
44 const args = message.content.slice(".law".length).trim().split(/ +/g);
45 const command = args.shift().toLowerCase();
46
47 const lawLinksEmb = new Discord.RichEmbed()
48 .setAuthor("lawAMV", "https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
49 .setColor("#553B82")
50 .setDescription("[Youtube](https://www.youtube.com/channel/UCcgvwZgeQIRQ-g9WDqgwXFw) - [Instagram](https://www.instagram.com/lawamvs/) - [Twitter](https://twitter.com/lawAMVs)")
51
52 if(command === "invite") {
53 message.channel.send("https://discord.gg/McdSQGh");
54 }
55
56 if (command === "links" || command === "youtube" || command === "yt" || command === "instagram" || command === "ig" || command === "twitter"){
57 message.channel.send(lawLinksEmb);
58 }
59
60 if (command === "members") {
61 const lawMembersEmb = new Discord.RichEmbed()
62 .setAuthor("lawAMV", "https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
63 .setThumbnail("https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
64 .setColor("#E71E62")
65 .setDescription("There are **" + message.guild.roles.find("name", "Law Members").members.map(m => m.toString()).sort().length + "** law members !\n\n" + message.guild.roles.find("name", "Law Members").members.map(m => m.user.tag).join("\n"));
66 message.channel.send(lawMembersEmb);
67 }
68
69 if (command === "friends") {
70 const lawFriendsEmb = new Discord.RichEmbed()
71 .setAuthor("lawAMV", "https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
72 .setThumbnail("https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
73 .setColor("#C28010")
74 .setDescription("There are **" + message.guild.roles.find("name", "Law Friends").members.map(m => m.toString()).sort().length + "** law friends !\n\n" + message.guild.roles.find("name", "Law Friends").members.map(m => m.user.tag).join("\n"));
75 message.channel.send(lawFriendsEmb);
76 }
77
78 if (command === "help"){
79 const lawHelpEmb = new Discord.RichEmbed()
80 .setAuthor("lawAMV", "https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
81 .setThumbnail("https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
82 .setColor("#553B82")
83 .setDescription("Prefix : `.law` - Example : `.law chocholate`")
84 .addField("help", "Display how to use the law bot.")
85 .addField("invite", "Display the official law invite link.")
86 .addField("links", "Display the official law Youtube, Instagram, and Twitter links.")
87 .addField("members", "Display the Law team members list.")
88 .addField("friends", "Display the Law friends list.")
89 .addField("8ball", "A home made 8ball.\nUsage : `.law 8ball Your question ?`")
90 .addField("list", "Shows how many we are on this server.")
91 .addField("magik", "A wall of magic particles for you.")
92 .addField("mep", "Shows the last official law MEP.");
93 if(message.member.hasPermission("ADMINISTRATOR"))
94 {
95 lawHelpEmb.addField("announcement", "Makes a beautiful embed message announcement for you. :3\nUsage : `.law announcement I love banana !!!`")
96 .addField("setWatching | setListening | setPlaying", "Change the current bot activity.\nUsage : `.law setPlaying with mike's D.`\nTo restore the default values, write : `.law setDefaultActivity`");
97 }
98 message.channel.send(lawHelpEmb);
99 }
100 if(message.content === ".law 8ball"){
101 return;
102 }
103 if(message.content.startsWith(".law 8ball ")) {
104 var commandcut = message.content.substr(".law 8ball ".length);
105 var messagee = "";
106 var argumentarray = commandcut.split(",");
107 argumentarray.forEach(function (element) {
108 messagee += element + " ";
109 }, this);
110 const waifuArray = [
111 "Senjougahara Hitagi",
112 "Tsubasa Hanekawa",
113 "Yukinoshita Yukino",
114 "Rory Mercury",
115 "Azusa Nakano",
116 "Yui Hirasawa",
117 "Rem",
118 "Emilia",
119 "Eru Chitanda",
120 "Taiga Aisaka",
121 "Yuigahama Yui",
122 "Isla",
123 "Hiiragi Shinoa",
124 "Akame",
125 "Kurome",
126 "Nao Tomori"
127 ];
128 var waifuChoice = waifuArray[Math.floor(Math.random() * waifuArray.length)];
129 const eightballAnswers = [
130 "Yes.",
131 "Oh yeaaaah. <3",
132 "No.",
133 "Fuck no. o_o",
134 "Hmmm you should ask later... ♥",
135 "[Loading a fake answer...]",
136 "You better ask <@334442604475449345> for it !",
137 "Nope, sorry. *But... " + waifuChoice + " best girl !!!!*"
138 ];
139 var randChoice = eightballAnswers[Math.floor(Math.random() * eightballAnswers.length)];
140 message.channel.send("<:8ball:425774624404537357> **| " + randChoice + "**");
141 }
142
143 if(command === "list") {
144 const law_members = message.guild.members.map(m => m.toString()).sort();
145 const lawList = new Discord.RichEmbed()
146 .setAuthor("lawAMV", "https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
147 .setColor("#553B82")
148 .setDescription("We are **" + law_members.length + "** people(s) on this server !");
149 message.channel.send(lawList);
150 }
151 if(command === "magik") {
152 message.channel.send(`Here's a magic wall for you, <@${message.author.id}> ! <3\n
153 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>\n
154 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>\n
155 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>\n
156 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>\n
157 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>\n
158 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>\n
159 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>\n
160 <:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376><:sparkles:426794428322021376>`);
161 }
162 if(command === "mep") {
163 var opts = {
164 maxResults: 1,
165 order: 'date',
166 key: 'AIzaSyAV-H-zZ0rButd1Gi0VW04Kh-zJKZrv_Ns',
167 channelId: 'UCcgvwZgeQIRQ-g9WDqgwXFw',
168 type: 'video'
169 };
170 const lawMeps = new Discord.RichEmbed()
171 .setAuthor("lawAMV", "https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
172 .setDescription("This is our last MEP :")
173 .setThumbnail("https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
174 .setColor("#553B82");
175 search('lawAMVs mep', opts, function (err, results) {
176 if (err) return console.log(err);
177 for (var resultCount = 0; resultCount < opts.maxResults; resultCount++) {
178 var publishedAt = new Date(results[resultCount].publishedAt);
179 if (results[resultCount].title.startsWith("MEP"))
180 {
181 lawMeps.addField(results[resultCount].title, "__Link:__ " + results[resultCount].link + "\n__Release date:__ " + publishedAt.toDateString(), true);
182 lawMeps.setImage(results[resultCount].thumbnails.medium.url)
183 }
184 }
185 message.channel.send(lawMeps);
186 });
187 }
188 if (message.content.startsWith(".law announcement ")) {
189 var commandcut = message.content.substr(".law announcement ".length);
190 var messagee = "";
191 var argumentarray = commandcut.split(" ");
192 argumentarray.forEach(function (element) {
193 messagee += element + " ";
194 }, this);
195 var announcementEmb = new Discord.RichEmbed()
196 .setAuthor("lawAMV", "https://yt3.ggpht.com/-464n3t5gsuw/AAAAAAAAAAI/AAAAAAAAAAA/csBjGhz51gY/s176-c-k-no-mo-rj-c0xffffff/photo.jpg")
197 .setColor("#553B82")
198 .setDescription(messagee)
199 .setFooter(message.author.username, message.author.avatarURL)
200 .setTimestamp();
201 if(message.member.hasPermission("ADMINISTRATOR")){
202 message.delete(10);
203 message.channel.send("@everyone").then(msg => {
204 msg.delete(10);
205 });
206 message.channel.send(announcementEmb);
207 } else {
208 message.channel.send(`<@${message.author.id}>` + " **| Sorry my dude, but only peoples with admin rights are allowed to do this.**");
209 }
210 }
211
212 if (message.content.startsWith(".law setWatching ")) {
213 var commandcut = message.content.substr(".law setWatching ".length);
214 var messagee = "";
215 var argumentarray = commandcut.split(" ");
216 argumentarray.forEach(function (element) {
217 messagee += element + " ";
218 }, this);
219 if (message.member.hasPermission("ADMINISTRATOR")) {
220 bot.user.setActivity(messagee, { type: "WATCHING" });
221 message.channel.send("Successfully changed the current bot activity !");
222 } else {
223 message.channel.send(`<@${message.author.id}>` + " **| Sorry my dude, but only peoples with admin rights are allowed to do this.**");
224 }
225 }
226 if (message.content.startsWith(".law setPlaying ")) {
227 var commandcut = message.content.substr(".law setPlaying ".length);
228 var messagee = "";
229 var argumentarray = commandcut.split(" ");
230 argumentarray.forEach(function (element) {
231 messagee += element + " ";
232 }, this);
233 if (message.member.hasPermission("ADMINISTRATOR")) {
234 bot.user.setActivity(messagee, { type: "PLAYING" });
235 message.channel.send("Successfully changed the current bot activity !");
236 } else {
237 message.channel.send(`<@${message.author.id}>` + " **| Sorry my dude, but only peoples with admin rights are allowed to do this.**");
238 }
239 }
240 if (message.content.startsWith(".law setListening ")) {
241 var commandcut = message.content.substr(".law setListening ".length);
242 var messagee = "";
243 var argumentarray = commandcut.split(" ");
244 argumentarray.forEach(function (element) {
245 messagee += element + " ";
246 }, this);
247 if (message.member.hasPermission("ADMINISTRATOR")) {
248 bot.user.setActivity(messagee, { type: "LISTENING" });
249 message.channel.send("Successfully changed the current bot activity !");
250 } else {
251 message.channel.send(`<@${message.author.id}>` + " **| Sorry my dude, but only peoples with admin rights are allowed to do this.**");
252 }
253 }
254
255 if (message.content.startsWith(".law setDefaultActivity")) {
256 if (message.member.hasPermission("ADMINISTRATOR")) {
257 bot.user.setActivity(bot.users.size + "peoples on this server.", { type: "WATCHING" });
258 message.channel.send("Successfully restored the current bot activity !");
259 } else {
260 message.channel.send(`<@${message.author.id}>` + " **| Sorry my dude, but only peoples with admin rights are allowed to do this.**");
261 }
262 }
263
264 /*sql.get(`SELECT * FROM scores WHERE userId = "${message.author.id}"`).then(row => {
265 console.log("select works!");
266 if (!row) {
267 console.log("row insert condition works!");
268 sql.run("INSERT INTO scores (userId, points, level) VALUES (?, ?, ?)", [message.author.id, 1, 0]);
269 } else {
270 console.log("row insert ELSE condition works!");
271 sql.run(`UPDATE scores SET points = ${row.points + 1} WHERE userId = ${message.author.id}`);
272 }
273 }).catch(() => {
274 console.error;
275 sql.run("CREATE TABLE IF NOT EXISTS scores (userId TEXT, points INTEGER, level INTEGER)").then(() => {
276 sql.run("INSERT INTO scores (userId, points, level) VALUES (?, ?, ?)", [message.author.id, 1, 0]);
277 });
278 });*/
279});
280bot.login('NDI5NjgwNTQ5OTAxMzY5MzY1.DaFOTQ.9U0DGsdqwT5Ndrw60wDJa_Dq2ag'); // dev token
281//bot.login('NDI1MzM5MzIzMTY1MDQ4ODQy.DZGAFQ.zmTfC0sOrLDZLPqaep_QErxmmYU'); //prod token