This repository has been archived by the owner on Jan 30, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
CoCoBot.js
395 lines (356 loc) · 22.1 KB
/
CoCoBot.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
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
/*
Copyright 2020. Cat Coding Committee
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
const keylist = [];
var key_cnt = 0;
function roomBangjang(room) {
if(room == "운영위방") {
return "\n테스트중입니다";
}
else if(room == "C방") {
return "\n뽀로로 Cpp Lu175 러리 양사 코양" + "\n신고 #신고 /신고";
}
else if(room === "자바방") {
return "\n러리 Cpp 녹치 양사 코양" + "\n신고 #신고 /신고";
}
else if(room == "파이썬방") {
return "\n코양 Cpp 깃고 러리 룰루 양사" + "\n신고 #신고 /신고";
}
else if(room == "웹방") {
return "\n코양 Cpp 녹치 러리 뽀로로 양사" + "\n신고 #신고 /신고";
}
else if(room == "AI방") {
return "\nCpp 뽀로로 코양" + "\n신고 #신고 /신고";
}
else if(room == "견적방") {
return "\n양사 Cpp 깃고 녹치 러리 코양" + "\n신고 #신고 /신고";
}
else if(room == "작곡방") {
return "\n양사, Mute Jack, 황병욱, 블루링, 조담" + "\n신고 #신고 /신고";
}
}
var player = null;
function response(room, msg, sender, isGroupChat, replier, ImageDB) {
var len = msg.length;
var roomList = ["운영위방", "C방", "자바방", "파이썬방", "웹방", "AI방", "견적방", "작곡방"];
//욕, 광고 감지 코드
var advertisement = ["www1.president.go.kr","소다방", "합법", "제태크", "재테크", "선착순", "성인방송", "성인 방송", "섹시", "수익", "야동", "t.me","band.", "광고", "가리기", "갱뱅", "NO모", "배팅", "결혼 등급", "투자금", "급전", "무료수신거부", "홍보대행", "고객만족", "시노스", "베팅", "파워볼", "미니게임", "카지노", "주식", "원금보장", "원금 보장", "홍보", "twitch", "사례"];
var cuss = [
"10새리", "10세리", "10쉐이", "10쉑", "10스", "10쌔", "10쌔기", "10쎄", "10창", "10탱",
"18것", "18넘", "18놈", "18뇬", "18럼", "18롬", "18새", "18색", "18세끼", "18세리", "18섹", "18쉑", "18스",
"18아",
"갈보년", "같은년", "같은뇬", "개같", "개구라", "개년", "개놈", "개뇬", "개대중", "개독", "개돼중", "개랄",
"개보지", "개뻥", "개새", "개색", "개섀끼", "개세", "개소", "개쇳기", "개수작", "개쉐", "개쉑", "개쉽", "개스끼",
"개시키", "개십새", "개쐑", "개쑈", "개씹", "개아들",
"개자슥", "개자지", "개접", "개좆", "개좌식", "개허접", "걔새", "걔수작", "걔시끼", "걔시키", "걔썌", "거지같",
"게색기", "게색끼", "광뇬", "구녕", "ㄲㅣ",
"노무노무", "노무딱", "노무짱", "노짱", "놈현", "뉘뮈", "뉘미럴", "느금", "니귀미", "니기미", "니미", "니미랄",
"니미럴", "니미씹", "니미요", "니아배", "니아베", "니아비", "니애미", "니어매", "니어메", "니어미", "니에미",
"니엠", "닝기리", "닝기미",
"닥쳐", "닭쳐", "뎡신", "돈놈", "돌아이", "돌은놈", "되질래", "뒈져", "뒈진", "뒈질",
"뒤질래", "등신", "디져라", "디진다", "디질래", "따식", "때놈", "또라이", "똘아이", "뙈놈", "뙤놈",
"뙨넘", "뙨놈", "뚜쟁", "뛰발", "띄발", "띠바", "띠발", "띠발", "띠밤", "띠불", "띠ㅋ발", "띠팔",
"메친넘", "메친놈", "미췬", "미친넘", "미친년", "미친놈", "미친스까이", "미틴",
"바랄년", "뱅마", "뱅신", "벼엉신", "병쉰", "병신", "병자", "부랄", "부럴", "불알", "붙어먹", "뷰웅",
"븅", "븅신", "빌어먹", "빙시", "빙신", "빠구리", "빠굴", "빠큐", "뻐큐", "뻑큐", "뽁큐",
"ㅅㅂ", "ㅅㅐ", "상넘이", "상놈을", "상놈의", "상놈이", "새갸", "새기", "새꺄", "새끼",
"새키", "색끼", "생쑈", "세갸", "세꺄", "세끼", "섹스", "셰끼", "쉐기", "쉐끼", "쉐리", "쉐에기", "쉐키", "쉑",
"쉨", "쉬발", "쉬밸", "쉬벌", "쉬뻘", "쉬펄", "쉽알", "스패킹", "스팽", "시끼", "시댕", "시뎅", "시랄",
"시발", "시벌", "시부랄", "시부럴", "시부레", "시부리", "시불", "시브랄", "시팍", "시팔",
"시펄", "심탱", "십8", "십라", "십새", "십세", "십쉐", "십쉐이", "십스키", "십쌔", "십창", "십탱",
"싶알", "ㅆ1발", "ㅆㅂ", "ㅆ앙", "ㅆㅍ", "ㅆㅣ", "싸가지", "싹아지", "쌉년", "쌍넘", "쌍년", "쌍놈", "쌍뇬",
"쌔끼", "쌕", "쌩쑈", "쌴년", "썅", "썡쇼", "써벌", "썩을년", "썩을놈", "쎄꺄", "쎄엑", "쒸벌",
"쒸뻘", "쒸팔", "쒸펄", "쓰바", "쓰박", "쓰발", "쓰벌", "쓰팔", "씁새", "씁얼", "씌발", "씌파", "씨1발", "씨8",
"씨끼", "씨댕", "씨뎅", "씨바", "씨바랄", "씨박", "씨발", "씨방새", "씨방세", "씨밸", "씨뱅", "씨벌", "씨벨",
"씨봉", "씨봉알", "씨부랄", "씨부럴", "씨부렁", "씨부리", "씨불", "씨붕", "씨브랄", "씨빠", "씨빨", "씨뽀랄",
"씨앙", "씨ㅋ발", "씨파", "씨팍", "씨팔", "씨펄", "씸년", "씸뇬", "씹같", "씹년", "씹뇬", "씹방",
"씹보지", "씹새", "씹새리", "씹세", "씹쉐", "씹스키", "씹쌔", "씹이", "씹자지", "씹질",
"씹창", "씹탱", "씹퇭", "씹팔", "씹할", "씹헐",
"아가리", "아갈통", "아구창", "아구통", "아굴", "앰창", "양넘", "양년", "양놈", "엄창", "엠병", "엠창", "여물통",
"엿같", "옘병", "옘빙", "왜년", "왜놈", "욤병", "육갑", "은년", "을년", "응디", "이기야", "이년",
"이새키", "이스끼",
"ㅈㄲ", "ㅈㄴ", "ㅈㄹ", "자슥", "잡것", "잡넘", "잡년", "잡놈", "저년", "접년", "젖밥", "조까",
"조까치", "조낸", "조또", "조빠", "조쟁이", "조지냐", "조진다", "조질래", "조찐", "존나", "존니", "존만",
"좀물", "좁년", "좁밥", "좃까", "좃또", "좃만", "좃밥", "좃이", "좃찐", "좆", "좇같", "좇이",
"주글", "주데이", "주뎅", "주둥아리", "주둥이", "죽고잡", "죽통", "쥐랄", "쥐롤", "쥬디",
"지랄", "지럴", "지롤", "지미랄", "쪼다", "쫍빱", "찌랄",
"창녀", "창년",
"캐년", "캐놈", "캐스끼", "캐스키", "캐시키",
"ㅍㅏ", "팔럼", "퍽큐",
"호로놈", "호로색", "호로쉑", "호로스까이", "호로스키", "후라들", "후래자식", "후레", "후뢰",
"凸"];
for(var i = 0; i < roomList.length; i++) {
if(room == roomList[i]) {
if (room == "작곡방") {
if (len > 60) {
for (var i = 0; i < advertisement.length; i++) {
if (msg.indexOf(advertisement[i]) != -1) {
replier.reply("문제의 키워드를 발견했습니다\n닉네임 : " + sender);
replier.reply(roomBangjang(room));
break;
}
}
}
for(var i = 0; i < cuss.length; i++) {
if(msg.indexOf(cuss[i]) != -1) {
replier.reply("문제의 키워드를 발견했습니다(" + cuss[i] + ")\n" + "\n닉네임 : " + sender);
replier.reply(roomBangjang(room));
break;
}
}
}
else {
const Detecting = 1;
for (var i = 0; i < keylist.length; i++) {
if (msg.indexOf(keylist[i]) != -1 && room != "3학년5반" && room != "운영위방") {
replier.reply(
"로그방",
"홍보키 사용 : " +
"\n감지 위치 : " + room +
"\n닉네임 : " + sender +
"\n사용된 키 : " + keylist[i]
);
keylist.splice(i, 1);
Detecting = 0;
}
}
if (len > 60) {
for (var i = 0; i < advertisement.length; i++) {
if (msg.indexOf(advertisement[i]) != -1 && room != "3학년5반" && Detecting != 0) {
replier.reply(
"로그방",
"광고 감지" +
"\n감지 위치 : " + room +
"\n닉네임 : " + sender +
"\n키워드 : " + advertisement[i] +
roomBangjang(room));
replier.reply(
"로그방",
"문제의 메세지\n" + msg);
}
}
}
for(var i = 0; i < cuss.length; i++) {
if(msg.indexOf(cuss[i]) != -1 && room != "3학년5반") {
replier.reply("문제의 키워드를 발견했습니다.");
replier.reply(
"로그방",
"욕설 감지" +
"\n감지 위치 : " + room +
"\n닉네임 : " + sender +
"\n키워드 : " + cuss[i] +
roomBangjang(room));
replier.reply(
"로그방",
"문제의 메세지\n" + msg);
}
}
}
var day = new Date();
// 도움말
if (msg == "/help") {
replier.reply(
"/help" + "\n명령어에 대한 도움말 정보를 제공합니다." +
"\n/채팅방 목록" + "\n고코위의 모든 채팅방 링크를 표시합니다." +
"\n/서버 상태" + "\n코코의 정보 및 상태를 표시합니다." +
"\n/서버 개발자" + "\n코코봇의 개발자를 알려줍니다." +
"\n/깃허브" + "\n관리자들의 깃허브 주소를 알려줍니다.");
if (room == "운영위방") {
replier.reply(
"관리자 전용 기능" +
"\n\n코코야" + "\n기분에 따라 대답하는 온도차가 큽니다." +
"\n/가위바위보" + "\n가위바위보를 합니다." +
"\n/날짜" + "\n오늘의 날짜를 알려줍니다." +
"\n/시간" + "\n현재 시각을 알려줍니다." +
"\n/짖어" + "\n짖습니다." +
"\n/호출" + "\n관리자들의 호출 명령어를 알려줍니다.");
}
}
// 기본 명령어 모음
if (msg == "/채팅방 목록") {
replier.reply(
"클릭시 방 목록 보기 " +
"\n\n저희는 여러 개의 방과 같이 활동하는 개발자 연합입니다. 다른 종류의 언어를 질문하고 싶으시면 밑의 링크를 타시길 바랍니다." +
"\n\n네이버카페(공통) - https://cafe.naver.com/codecat" +
"\n\n디스코드(공통) - https://discord.gg/cZ5r5PRTX5" +
"\n\nC언어, C#, C++, 게임 엔진 - https://open.kakao.com/o/ghFjlzr" +
"\n\n자바, 안드로이드 - https://open.kakao.com/o/goAvtbOb" +
"\n\n파이썬, R - https://open.kakao.com/o/gWvnqvF" +
"\n\n웹 - https://open.kakao.com/o/gm2yL8kb" +
"\n\n데이터 사이언스, AI(ML/DL) 개발 - https://open.kakao.com/o/g4lJGyzd" +
"\n\n조립, 견적, pc문제 - https://open.kakao.com/o/gEI0jymb");
}
if (msg == "/서버 상태") {
replier.reply(
"봇 버전 : " + Bot.getVersion() +
"\n자바스크립트 버전 : " + Bot.getJsVersion() +
"\n모델명: " + Device.getModelName() +
"\n안드로이드 버전: " + Device.getAndroidVersion() +
"\n안드로이드 API: " + Device.getApiLevel() +
"\n배터리 잔량: " + Device.getBatteryLevel() + "%" +
"\n배터리 온도: " + Device.getBatteryTemp() + "°C" +
"\n상태: ON" +
"\n이름: 코코"
);
}
if (msg == "/서버 개발자") {
replier.reply("개발자: 암고, 양사, 코양, 고수\n관리자: 코양\n운영: 고양이들의 코딩 위원회(C-3)\nCopyright 2020-2021. Cat Coding Committee. All rights reserved.");
}
if (msg == "/깃허브") {
replier.reply(
"코양이 위원장 - https://github.com/easycastle" +
"\n양 사 - https://github.com/sat0317" +
"\n러 리 - https://github.com/Coalery" +
"\n고 수 - https://github.com/cpprhtn" +
"\n깃 고 - https://github.com/NewPremium" +
"\n루 - https://github.com/Lu175" +
"\n뽀 로 로 - https://github.com/paxbun" +
"\n녹 색 치 킨 - https://github.com/IceJack");
replier.reply("다들 한번씩 놀러오세요~");
}
if (msg == "ㅍㅏ") {
replier.reply("투철한 신고 감사드립니다! 하지만 정책이 바뀌어서 앞으로는 '신고!'라고 해주시면 좋을것 같네요ㅎㅎ");
}
if (msg == "신고!") {
replier.reply(
"로그방",
"신고 감지" +
"\n신고 위치 : " + room +
"\n신고자 : " + sender +
roomBangjang(room))
replier.reply("신고 접수되었습니다!");
}
// 관리자 명령어 모음
if (room == "운영위방") {
if (msg == "코코야") {
var answer = Math.floor(Math.random() * 4);
if (answer == 0) {
replier.reply("네?");
}
else if (answer == 1) {
replier.reply("뭐");
}
else if (answer == 2) {
replier.reply("아 왜 불러ㅡㅡ");
}
else if (answer == 3) {
replier.reply("멍멍!");
}
}
if (msg == "/가위바위보") {
replier.reply("가위바위보 게임을 시작합니다.\n가위, 바위, 보 중 하나를 내주세요.");
player = sender;
}
if ((player == sender) && (msg == "가위" || msg == "바위" || msg == "보")) {
var result = Math.floor(Math.random() * 3);
if (result == 0) {
if (msg == "가위") {
replier.reply("저는 바위를 냈습니다.\n개한테 지냐ㅋ");
}
else if (msg == "바위") {
replier.reply("저는 보를 냈습니다.\n개한테 지냐ㅋ");
}
else if (msg == "보") {
replier.reply("저는 가위를 냈습니다.\n개한테 지냐ㅋ");
}
}
else if (result == 1) {
replier.reply("저는 " + msg + "를 냈습니다.\n비겼습니다.");
}
else if (result == 2) {
if (msg == "가위") {
replier.reply("저는 보를 냈습니다.\n당신이 이겼습니다.");
}
else if (msg == "바위") {
replier.reply("저는 가위를 냈습니다.\n당신이 이겼습니다.");
}
else if (msg == "보") {
replier.reply("저는 바위를 냈습니다.\n당신이 이겼습니다.");
}
}
player = null;
}
if (msg == "/날짜") {
replier.reply("오늘은 " + (day.getMonth() + 1) + "월 " + day.getDate() + "일 입니다.");
}
if (msg == "/시간") {
replier.reply("지금은 " + day.getHours() + "시 " + day.getMinutes() + "분 " + day.getSeconds() + "초입니다.");
}
if (msg == "/짖어") {
replier.reply("왈왈!");
}
if (msg == "/호출") {
replier.reply(
"C방" +
"\n→ C, c, 씨" +
"\n자바방 " +
"\n→ JAVA, java, 자바" +
"\n파이썬방" +
"\n→ python, py, 파이썬" +
"\n웹방" +
"\n→ 웹" +
"\nAI방" +
"\n→ AI, Ai, ai, 먀, 데싸" +
"\n견적방" +
"\n→ 견적");
}
if (msg == "/고코위") {
replier.reply("코양 양사 러리 깃고 Cpp 룰루 암고 Lu175 뽀로로 녹치");
replier.reply("어셈블!!!!!!!");
}
if (((msg == "/C") || (msg == "/c") || (msg == "/씨") || (msg == "/cpp") || (msg == "/C") || (msg == "/C"))) {
replier.reply("뽀로로 Cpp Lu175 러리 양사 코양");
replier.reply("C 어셈블!!!!!!!");
}
if (((msg == "/JAVA") || (msg == "/java") || (msg == "/자바"))) {
replier.reply("러리 Cpp 녹치 양사 코양");
replier.reply("자바 어셈블!!!!!!!");
}
if (((msg == "/python") || (msg == "/py") || (msg == "/파이썬"))) {
replier.reply("코양 Cpp 깃고 러리 룰루 양사");
replier.reply("파이썬 어셈블!!!!!!!");
}
if (msg == "/웹") {
replier.reply("코양 Cpp 녹치 러리 뽀로로 양사");
replier.reply("웹 어셈블!!!!!!!");
}
if (msg == "/AI" || msg == "/Ai" || msg == "/ai" || msg == "/먀" || msg == "/데싸") {
replier.reply("Cpp 뽀로로 코양");
replier.reply("AI 어셈블!!!!!!!");
}
if (msg == "/견적") {
replier.reply("양사 Cpp 깃고 녹치 러리 코양");
replier.reply("견적 어셈블!!!!!!!");
}
if (msg == "/키생성") {
replier.reply("생성할 키 갯수 (1~6사이 숫자 입력)");
player = sender;
}
if ((player == sender) && (msg == "1" || msg == "2" || msg == "3" || msg == "4" || msg == "5" || msg == "6")) {
key_cnt = Number(msg);
var max = 16777216;
var min = 1048576;
var key = Math.floor(Math.random() * (max - min)) + min;
key = key.toString(16);
replier.reply(
"아래 주어지는 키 번호는 홍보가 허용된 글에만 사용이 가능합니다" +
"\n아래 주어진 키를 홍보 글의 최상단에 붙여 넣어주세요.\n" +
key_cnt + "회 홍보시 해당 키는 효력이 사라지며, 재홍보를 원할 시 다시 키를 재발급 받아야 합니다.\n\n" +
"발급 키 : " + key);
for (var i = 0; i < key_cnt; i++)
keylist.push(key);
player = null;
}
if (msg == "/키목록") {
if (keylist.length == 0) {
replier.reply("생성된 키가 없습니다.");
}
replier.reply(keylist);
}
}
}
}
}