-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbot.js
More file actions
156 lines (140 loc) · 5.71 KB
/
Copy pathbot.js
File metadata and controls
156 lines (140 loc) · 5.71 KB
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
//TODO: link to database, get rid of arrays. Add remove or edit commands. Delete command messages?
var Discord = require('discord.io');
var logger = require('winston');
var auth = require('./auth.json');
var fs = require('fs');
//Set up discord bot
logger.remove(logger.transports.Console);
logger.add(logger.transports.Console, {
colorize: true
});
logger.level = 'debug';
var bot = new Discord.Client({
token: auth.token,
autorun: true
});
/*
Create arrays for each language you want to store sources too.
Currently this discord bot is meant to stay online, updating the arrays and saving to an external file in case the info is lost.
A better solution is storing/reading info from a database so you don't have to manually fix the info if the bot goes offline.
*/
var javaArray = ["Java Resources \n"];
var cArray = ["C Resources \n"];
var ccArray = ["C++ Resources \n"];
var pythonArray = ["Python Resources \n"];
var javascriptArray =["Javascript Resources \n"];
var perlArray = ["Perl Resources \n"];
var phpArray = ["PHP Resources \n"];
var sqlArray = ["SQL Resources \n"];
var extraArray = ["Extra Resources \n"];
var allData = [javaArray, cArray, ccArray, pythonArray, javascriptArray, perlArray, phpArray, sqlArray, extraArray];
bot.on('message', function (user, userID, channelID, message, evt) {
if (message.substring(0, 1) == '&') {
var args = message.substring(1).split(' ');
var cmd = args[0];
cmd = cmd.toUpperCase();
switch(cmd) {
case 'LIBRARY':
bot.sendMessage({
to: channelID,
message: 'Opened resource library. Usage is & followed by a command. \n\nTo list resources for a certain language, (example) &Java. Current supported languages: Java, C, C++, Python, Javascript, Perl, PHP, SQL.\n There is an Extra section as well. (&Extra).\n\n To add a resource, usage is &info langauge hyperlink description(optional). Ex: &info Java example.com An example site. Library will list contributors for each resource.'
});
break;
case 'JAVA':
sendMessage(channelID, readArray(javaArray));
break;
case 'C':
sendMessage(channelID, readArray(cArray));
break;
case 'C++':
sendMessage(channelID, readArray(ccArray));
break;
case 'PYTHON':
sendMessage(channelID, readArray(pythonArray));
break;
case 'JAVASCRIPT':
sendMessage(channelID, readArray(javascriptArray));
break;
case 'PERL':
sendMessage(channelID, readArray(perlArray));
break;
case 'PHP':
sendMessage(channelID, readArray(phpArray));
break;
case 'SQL':
sendMessage(channelID, readArray(sqlArray));
break;
case 'EXTRA':
sendMessage(channelID, readArray(extraArray));
break;
case 'INFO':
if(args.length >= 3) {
var choice = args[1].toUpperCase();
switch(choice) {
case 'JAVA':
addResource(javaArray, args, user);
break;
case 'C':
addResource(cArray, args, user);
break;
case 'C++':
addResource(ccArray, args, user);
break;
case 'PYTHON':
addResource(pythonArray, args, user);
break;
case 'JAVASCRIPT':
addResource(javascriptArray, args, user);
break;
case 'PERL':
addResource(perlArray, args, user);
break;
case 'PHP':
addResource(phpArray, args, user);
break;
case 'SQL':
addResource(sqlArray, args, user);
break;
case 'EXTRA':
addResource(extraArray, args, user);
break;
}
}
break;
}
}
});
function sendMessage(channelID, text) {
bot.sendMessage({
to: channelID,
message: text
});
}
function readArray(tarray) {
var text ="";
for(i = 0; i < tarray.length; i++) {
text += tarray[i] + '\n';
}
return text;
}
function addResource(tarray, args, user){
tarray.push(args[2]); //the hyperlink
if (args.length > 3) { //a description was included
var description = "";
for(i = 3; i < args.length; i++) {
description += args[i] + " " ;
}
tarray.push("*description: " + description); //we want this italicized
}
tarray.push("*contributor: " + user + "\n");
}
//Writes to external file every minute. This is to ensure data is not lost if the bot goes offline (since this isn't in a database)
function writeData() {
fs.writeFile("./test.txt", allData, function(err) {
if(err) {
return console.log(err);
}
console.log("The file was saved at " + new Date());
});
}
setInterval(writeData, 60000);