Compare commits
16 Commits
Author | SHA1 | Date |
---|---|---|
Jill | 82204dab82 | |
Jill | 504fd57b8e | |
Jill | 9339cd64ed | |
Jill | 1c59ccb513 | |
Jill | baf591ffc8 | |
Jill | 7daab42d5f | |
Jill | e4bdf94c5c | |
Jill | 58e4af94fd | |
Jill | 256bcba807 | |
Jill | b726fa7fb9 | |
Jill | 6e9f0a0b3a | |
Jill | e9c2b7ef4a | |
Jill | 2172572489 | |
Jill | ba5aaf12e5 | |
Jill | f76f42244f | |
skye | d619bba9f2 |
|
@ -11,6 +11,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/opus": "^0.5.3",
|
"@discordjs/opus": "^0.5.3",
|
||||||
"@discordjs/voice": "^0.6.0",
|
"@discordjs/voice": "^0.6.0",
|
||||||
|
"cheerio": "^1.0.0-rc.10",
|
||||||
"discord.js": "^13.2.0",
|
"discord.js": "^13.2.0",
|
||||||
"ffmpeg-static": "^4.4.0",
|
"ffmpeg-static": "^4.4.0",
|
||||||
"got": "^11.8.2",
|
"got": "^11.8.2",
|
||||||
|
@ -435,6 +436,11 @@
|
||||||
"which": "bin/which"
|
"which": "bin/which"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/boolbase": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
|
||||||
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
|
@ -530,6 +536,41 @@
|
||||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||||
},
|
},
|
||||||
|
"node_modules/cheerio": {
|
||||||
|
"version": "1.0.0-rc.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
|
||||||
|
"integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
|
||||||
|
"dependencies": {
|
||||||
|
"cheerio-select": "^1.5.0",
|
||||||
|
"dom-serializer": "^1.3.2",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"htmlparser2": "^6.1.0",
|
||||||
|
"parse5": "^6.0.1",
|
||||||
|
"parse5-htmlparser2-tree-adapter": "^6.0.1",
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/cheeriojs/cheerio?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/cheerio-select": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
|
||||||
|
"integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
|
||||||
|
"dependencies": {
|
||||||
|
"css-select": "^4.1.3",
|
||||||
|
"css-what": "^5.0.1",
|
||||||
|
"domelementtype": "^2.2.0",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"domutils": "^2.7.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/fb55"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/chownr": {
|
"node_modules/chownr": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
||||||
|
@ -607,6 +648,32 @@
|
||||||
"node": ">= 8"
|
"node": ">= 8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/css-select": {
|
||||||
|
"version": "4.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
|
||||||
|
"integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
|
||||||
|
"dependencies": {
|
||||||
|
"boolbase": "^1.0.0",
|
||||||
|
"css-what": "^5.0.0",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"domutils": "^2.6.0",
|
||||||
|
"nth-check": "^2.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/fb55"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/css-what": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/fb55"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/currently-unhandled": {
|
"node_modules/currently-unhandled": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
|
||||||
|
@ -782,6 +849,57 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/dom-serializer": {
|
||||||
|
"version": "1.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
|
||||||
|
"integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
|
||||||
|
"dependencies": {
|
||||||
|
"domelementtype": "^2.0.1",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"entities": "^2.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/domelementtype": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/fb55"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/domhandler": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
|
||||||
|
"dependencies": {
|
||||||
|
"domelementtype": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/domutils": {
|
||||||
|
"version": "2.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
||||||
|
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
|
||||||
|
"dependencies": {
|
||||||
|
"dom-serializer": "^1.0.1",
|
||||||
|
"domelementtype": "^2.2.0",
|
||||||
|
"domhandler": "^4.2.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/fb55/domutils?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/dot-prop": {
|
"node_modules/dot-prop": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
|
||||||
|
@ -804,6 +922,14 @@
|
||||||
"once": "^1.4.0"
|
"once": "^1.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/entities": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/fb55/entities?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/env-paths": {
|
"node_modules/env-paths": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
||||||
|
@ -1007,6 +1133,24 @@
|
||||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
|
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
|
||||||
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
|
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
|
||||||
},
|
},
|
||||||
|
"node_modules/htmlparser2": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
|
||||||
|
"funding": [
|
||||||
|
"https://github.com/fb55/htmlparser2?sponsor=1",
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/fb55"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"domelementtype": "^2.0.1",
|
||||||
|
"domhandler": "^4.0.0",
|
||||||
|
"domutils": "^2.5.2",
|
||||||
|
"entities": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/http-cache-semantics": {
|
"node_modules/http-cache-semantics": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
|
||||||
|
@ -1458,6 +1602,17 @@
|
||||||
"set-blocking": "^2.0.0"
|
"set-blocking": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/nth-check": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
|
||||||
|
"dependencies": {
|
||||||
|
"boolbase": "^1.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/fb55/nth-check?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/object-assign": {
|
"node_modules/object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
|
@ -1570,6 +1725,19 @@
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/parse5": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
|
||||||
|
},
|
||||||
|
"node_modules/parse5-htmlparser2-tree-adapter": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
|
||||||
|
"dependencies": {
|
||||||
|
"parse5": "^6.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/path-exists": {
|
"node_modules/path-exists": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
|
||||||
|
@ -2483,6 +2651,11 @@
|
||||||
"meow": "^5.0.0"
|
"meow": "^5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"boolbase": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
|
||||||
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
|
@ -2558,6 +2731,32 @@
|
||||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||||
},
|
},
|
||||||
|
"cheerio": {
|
||||||
|
"version": "1.0.0-rc.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz",
|
||||||
|
"integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==",
|
||||||
|
"requires": {
|
||||||
|
"cheerio-select": "^1.5.0",
|
||||||
|
"dom-serializer": "^1.3.2",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"htmlparser2": "^6.1.0",
|
||||||
|
"parse5": "^6.0.1",
|
||||||
|
"parse5-htmlparser2-tree-adapter": "^6.0.1",
|
||||||
|
"tslib": "^2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"cheerio-select": {
|
||||||
|
"version": "1.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz",
|
||||||
|
"integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==",
|
||||||
|
"requires": {
|
||||||
|
"css-select": "^4.1.3",
|
||||||
|
"css-what": "^5.0.1",
|
||||||
|
"domelementtype": "^2.2.0",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"domutils": "^2.7.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"chownr": {
|
"chownr": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
||||||
|
@ -2620,6 +2819,23 @@
|
||||||
"which": "^2.0.1"
|
"which": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"css-select": {
|
||||||
|
"version": "4.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz",
|
||||||
|
"integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==",
|
||||||
|
"requires": {
|
||||||
|
"boolbase": "^1.0.0",
|
||||||
|
"css-what": "^5.0.0",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"domutils": "^2.6.0",
|
||||||
|
"nth-check": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"css-what": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw=="
|
||||||
|
},
|
||||||
"currently-unhandled": {
|
"currently-unhandled": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
|
||||||
|
@ -2733,6 +2949,39 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"dom-serializer": {
|
||||||
|
"version": "1.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz",
|
||||||
|
"integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==",
|
||||||
|
"requires": {
|
||||||
|
"domelementtype": "^2.0.1",
|
||||||
|
"domhandler": "^4.2.0",
|
||||||
|
"entities": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"domelementtype": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A=="
|
||||||
|
},
|
||||||
|
"domhandler": {
|
||||||
|
"version": "4.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz",
|
||||||
|
"integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==",
|
||||||
|
"requires": {
|
||||||
|
"domelementtype": "^2.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"domutils": {
|
||||||
|
"version": "2.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
||||||
|
"integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
|
||||||
|
"requires": {
|
||||||
|
"dom-serializer": "^1.0.1",
|
||||||
|
"domelementtype": "^2.2.0",
|
||||||
|
"domhandler": "^4.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"dot-prop": {
|
"dot-prop": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
|
||||||
|
@ -2749,6 +2998,11 @@
|
||||||
"once": "^1.4.0"
|
"once": "^1.4.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"entities": {
|
||||||
|
"version": "2.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
|
||||||
|
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
|
||||||
|
},
|
||||||
"env-paths": {
|
"env-paths": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
||||||
|
@ -2906,6 +3160,17 @@
|
||||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
|
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
|
||||||
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
|
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
|
||||||
},
|
},
|
||||||
|
"htmlparser2": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
|
||||||
|
"requires": {
|
||||||
|
"domelementtype": "^2.0.1",
|
||||||
|
"domhandler": "^4.0.0",
|
||||||
|
"domutils": "^2.5.2",
|
||||||
|
"entities": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"http-cache-semantics": {
|
"http-cache-semantics": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
|
||||||
|
@ -3252,6 +3517,14 @@
|
||||||
"set-blocking": "^2.0.0"
|
"set-blocking": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nth-check": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==",
|
||||||
|
"requires": {
|
||||||
|
"boolbase": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"object-assign": {
|
"object-assign": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||||
|
@ -3331,6 +3604,19 @@
|
||||||
"json-parse-better-errors": "^1.0.1"
|
"json-parse-better-errors": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"parse5": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw=="
|
||||||
|
},
|
||||||
|
"parse5-htmlparser2-tree-adapter": {
|
||||||
|
"version": "6.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
|
||||||
|
"integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
|
||||||
|
"requires": {
|
||||||
|
"parse5": "^6.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"path-exists": {
|
"path-exists": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@discordjs/opus": "^0.5.3",
|
"@discordjs/opus": "^0.5.3",
|
||||||
"@discordjs/voice": "^0.6.0",
|
"@discordjs/voice": "^0.6.0",
|
||||||
|
"cheerio": "^1.0.0-rc.10",
|
||||||
"discord.js": "^13.2.0",
|
"discord.js": "^13.2.0",
|
||||||
"ffmpeg-static": "^4.4.0",
|
"ffmpeg-static": "^4.4.0",
|
||||||
"got": "^11.8.2",
|
"got": "^11.8.2",
|
||||||
|
|
219
src/index.js
219
src/index.js
|
@ -5,7 +5,8 @@ const { token } = require('../config.json');
|
||||||
const { exec } = require('child_process');
|
const { exec } = require('child_process');
|
||||||
const { promisify } = require('util');
|
const { promisify } = require('util');
|
||||||
const got = require('got');
|
const got = require('got');
|
||||||
const youtubedl = require('youtube-dl')
|
const youtubedl = require('youtube-dl');
|
||||||
|
const cheerio = require('cheerio');
|
||||||
|
|
||||||
const bot = new Discord.Client({
|
const bot = new Discord.Client({
|
||||||
intents: [
|
intents: [
|
||||||
|
@ -23,7 +24,73 @@ bot.once('ready', () => {
|
||||||
const prefix = ';';
|
const prefix = ';';
|
||||||
const embedColor = 0xa0ffa5;
|
const embedColor = 0xa0ffa5;
|
||||||
const foggyImg = 'https://cdn.discordapp.com/attachments/789023763396165633/898908687299657728/552bb191-93e3-4eaa-b935-d5031f3845e7.gif';
|
const foggyImg = 'https://cdn.discordapp.com/attachments/789023763396165633/898908687299657728/552bb191-93e3-4eaa-b935-d5031f3845e7.gif';
|
||||||
const ffprobeRegex = /Audio: ([^,\n]+), (\d+) ?Hz, ?([^,\n]+), ?([^,\n]+)(, ?([^,\n]+))?/;
|
|
||||||
|
const randomTrendStrings = [
|
||||||
|
'GUYS GUYS GUYS GUYS GUYS DID YOU know That {}',
|
||||||
|
'trending in russia today: {}',
|
||||||
|
'I Am Going To Tear Off Your {}',
|
||||||
|
'tghhe {} is feeling sussy today',
|
||||||
|
'i am going to devour a {}',
|
||||||
|
'{},,,,,,,........ mmmmmhhmhmhh :yummy:',
|
||||||
|
'{}..... no whay',
|
||||||
|
'Hot Singles Straight From [{}]',
|
||||||
|
'l',
|
||||||
|
'{} =)',
|
||||||
|
'Guys guys checkl this out: {}',
|
||||||
|
'hehe ..... ... {}.... :)',
|
||||||
|
'SyntaxError: {}',
|
||||||
|
'{} is veyr instantly',
|
||||||
|
'BITCOIN AT {} GO GO TO HTTPS://BITCOIN GO NOW for free ;;!!!!!',
|
||||||
|
'lol {}',
|
||||||
|
'the {}',
|
||||||
|
'GUYS today i accidentaly {}',
|
||||||
|
'jesus fuckign christ im going to actually fucking {}',
|
||||||
|
'`{}`. :)',
|
||||||
|
'holy shit lholy shit hHOLY shit HOLY SHIT {}\n\n!!!!!!!!!!!d'
|
||||||
|
];
|
||||||
|
|
||||||
|
async function postInRandomChannel(text) {
|
||||||
|
const guild = await bot.guilds.fetch('587108210121506816');
|
||||||
|
if (!guild.available) return;
|
||||||
|
const channels = await guild.channels.fetch();
|
||||||
|
const textChannels = channels.filter(c => c.parentId === '821064982439264308' && c.isText() && c.permissionsFor(bot.user.id).has(Discord.Permissions.FLAGS.SEND_MESSAGES));
|
||||||
|
if (textChannels.size === 0) return;
|
||||||
|
textChannels.random().send(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getTrend() {
|
||||||
|
try {
|
||||||
|
let t = await got('https://trends24.in/russia/');
|
||||||
|
const $ = cheerio.load(t.body);
|
||||||
|
const elems = $('.trend-card > .trend-card__list')[0];
|
||||||
|
const trends = elems.children.map(n => n.children[0].children[0].data).filter(t => !t.startsWith('#'));
|
||||||
|
return trends[Math.floor(Math.random() * trends.length)];
|
||||||
|
} catch(err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function postRandomTrend() {
|
||||||
|
const trend = await getTrend();
|
||||||
|
if (!trend) return;
|
||||||
|
postInRandomChannel(randomTrendStrings[Math.floor(Math.random() * randomTrendStrings.length)].replace('{}', trend));
|
||||||
|
}
|
||||||
|
|
||||||
|
function randomTimeout() {
|
||||||
|
if (Math.random() < 0.2) {
|
||||||
|
return Math.random() * 1000 * 60; // up to a minute
|
||||||
|
} else {
|
||||||
|
return 1000 * 60 * 60 * 12 + Math.random() * 1000 * 60 * 60 * 12; // from 12 to 24 hours
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function doTrendTimeout() {
|
||||||
|
postRandomTrend();
|
||||||
|
setTimeout(doTrendTimeout, randomTimeout());
|
||||||
|
}
|
||||||
|
// let t = randomTimeout();
|
||||||
|
// console.log(t / 1000 + ' Seconds Left.');
|
||||||
|
// setTimeout(doTrendTimeout, t);
|
||||||
|
|
||||||
async function checkVoiceChannel(msg) {
|
async function checkVoiceChannel(msg) {
|
||||||
if (!msg.guild) return;
|
if (!msg.guild) return;
|
||||||
|
@ -76,9 +143,9 @@ function advanceQueue(id, channel, subscription, connection) {
|
||||||
} else {
|
} else {
|
||||||
channel.send('no songs left, leaving');
|
channel.send('no songs left, leaving');
|
||||||
console.log('destroyig');
|
console.log('destroyig');
|
||||||
subscription.unsubscribe();
|
if (subscription) subscription.unsubscribe();
|
||||||
delete players[id];
|
if (players[id]) delete players[id];
|
||||||
connection.destroy();
|
if (connection) connection.destroy();
|
||||||
queue[id] = [];
|
queue[id] = [];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,7 +164,11 @@ async function play(song, id, connection, channel) {
|
||||||
try {
|
try {
|
||||||
err, out = await promisify(exec)('youtube-dl -f bestaudio --youtube-skip-dash-manifest --force-ipv4 -g "' + song.originalUrl + '"');
|
err, out = await promisify(exec)('youtube-dl -f bestaudio --youtube-skip-dash-manifest --force-ipv4 -g "' + song.originalUrl + '"');
|
||||||
} catch(err_) {
|
} catch(err_) {
|
||||||
err = err_;
|
try {
|
||||||
|
err, out = await promisify(exec)('youtube-dl -f best --youtube-skip-dash-manifest --force-ipv4 -g "' + song.originalUrl + '"');
|
||||||
|
} catch(err_) {
|
||||||
|
err = err_
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -110,27 +181,41 @@ async function play(song, id, connection, channel) {
|
||||||
url = out.stdout;
|
url = out.stdout;
|
||||||
}
|
}
|
||||||
|
|
||||||
const stream = got(url, {isStream: true});
|
try {
|
||||||
const resource = Voice.createAudioResource(stream, { inputType: Voice.StreamType.Arbitrary });
|
const stream = got(url, {isStream: true});
|
||||||
|
const resource = Voice.createAudioResource(stream, { inputType: Voice.StreamType.Arbitrary });
|
||||||
|
|
||||||
if (players[id]) {
|
stream.on('error', err => {
|
||||||
console.log('reusing player');
|
console.log(err);
|
||||||
player = players[id];
|
channel.send(`failed to play track: \`\`\`${err}\`\`\``);
|
||||||
} else {
|
|
||||||
console.log('creating new player');
|
|
||||||
player = Voice.createAudioPlayer();
|
|
||||||
players[id] = player;
|
|
||||||
subscription = connection.subscribe(player);
|
|
||||||
|
|
||||||
player.on(Voice.AudioPlayerStatus.Idle, () => {
|
|
||||||
advanceQueue(id, channel, subscription, connection);
|
advanceQueue(id, channel, subscription, connection);
|
||||||
|
return;
|
||||||
});
|
});
|
||||||
player.on(Voice.AudioPlayerStatus.Playing, () => {
|
|
||||||
playerStartTime[id] = Date.now();
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
player.play(resource);
|
if (players[id]) {
|
||||||
|
console.log('reusing player');
|
||||||
|
player = players[id];
|
||||||
|
} else {
|
||||||
|
console.log('creating new player');
|
||||||
|
player = Voice.createAudioPlayer();
|
||||||
|
players[id] = player;
|
||||||
|
subscription = connection.subscribe(player);
|
||||||
|
|
||||||
|
player.on(Voice.AudioPlayerStatus.Idle, () => {
|
||||||
|
advanceQueue(id, channel, subscription, connection);
|
||||||
|
});
|
||||||
|
player.on(Voice.AudioPlayerStatus.Playing, () => {
|
||||||
|
playerStartTime[id] = Date.now();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
player.play(resource);
|
||||||
|
} catch(err) {
|
||||||
|
console.log(err);
|
||||||
|
channel.send(`failed to play track: \`\`\`${err}\`\`\``);
|
||||||
|
advanceQueue(id, channel, subscription, connection);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
return player;
|
return player;
|
||||||
}
|
}
|
||||||
|
@ -157,6 +242,10 @@ function rawYTDLQueue(info) {
|
||||||
return song;
|
return song;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function formatTime(t) {
|
||||||
|
return `${Math.floor(t / 60).toString().padStart(2, '0')}:${Math.floor(t % 60).toString().padStart(2, '0')}`
|
||||||
|
}
|
||||||
|
|
||||||
async function queueUp(url, id) {
|
async function queueUp(url, id) {
|
||||||
if (!queue[id]) queue[id] = [];
|
if (!queue[id]) queue[id] = [];
|
||||||
|
|
||||||
|
@ -170,7 +259,7 @@ async function queueUp(url, id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
return [null, `failed to retrieve youtube-dl info!: \`\`\`${err}\`\`\``];
|
return [null, `failed to retrieve youtube-dl info!: \`\`\`${err.toString().slice(0, 1000)}\`\`\``];
|
||||||
} else {
|
} else {
|
||||||
if (info.length) {
|
if (info.length) {
|
||||||
info.forEach(i => {
|
info.forEach(i => {
|
||||||
|
@ -187,49 +276,56 @@ async function queueUp(url, id) {
|
||||||
return [1, null];
|
return [1, null];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function playOrQueue(qsong, channel, msg) {
|
||||||
|
const connection = await checkVoiceChannel(msg);
|
||||||
|
if (!connection) return;
|
||||||
|
|
||||||
|
console.log(`queueing ${qsong}`);
|
||||||
|
channel.send(`queueing <${qsong}>...`);
|
||||||
|
|
||||||
|
let [q, e] = await queueUp(qsong, msg.guild.id);
|
||||||
|
if (!q && e) [q, e] = await queueUp('ytsearch:' + qsong, msg.guild.id);
|
||||||
|
if (!q && e) return msg.channel.send(e);
|
||||||
|
const song = queue[msg.guild.id][queue[msg.guild.id].length - 1];
|
||||||
|
|
||||||
|
if (queue[msg.guild.id].length === 1) {
|
||||||
|
const embed = new Discord.MessageEmbed()
|
||||||
|
.setDescription(`now playing: **${song.titleFormat}**`)
|
||||||
|
.setThumbnail(song.thumbnail)
|
||||||
|
.setColor(embedColor)
|
||||||
|
.setAuthor('foggy ♫', foggyImg);
|
||||||
|
|
||||||
|
msg.channel.send({embeds: [embed]});
|
||||||
|
await play(queue[msg.guild.id][0], msg.guild.id, connection, msg.channel);
|
||||||
|
} else {
|
||||||
|
let queueString = `queued: **${song.titleFormat}** _at position ${queue[msg.guild.id].length - 1}_`;
|
||||||
|
if (q > 1) queueString = `queued **${q} songs** _at positions ${queue[msg.guild.id].length - q} - ${queue[msg.guild.id].length - 1}_`;
|
||||||
|
|
||||||
|
const embed = new Discord.MessageEmbed()
|
||||||
|
.setDescription(queueString)
|
||||||
|
.setColor(embedColor)
|
||||||
|
.setAuthor('foggy ♫', foggyImg);
|
||||||
|
msg.channel.send({embeds: [embed]});
|
||||||
|
|
||||||
|
if (!players[msg.guild.id] || players[msg.guild.id].state === Voice.AudioPlayerStatus.Idle || players[msg.guild.id].state === Voice.AudioPlayerStatus.Paused) {
|
||||||
|
await play(queue[msg.guild.id][0], msg.guild.id, connection, msg.channel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bot.on('messageCreate', async (msg) => {
|
bot.on('messageCreate', async (msg) => {
|
||||||
const content = msg.content;
|
const content = msg.content;
|
||||||
const params = content.replace(prefix, '').split(' ');
|
const params = content.replace(prefix, '').split(' ');
|
||||||
const cmd = params[0];
|
const cmd = params[0];
|
||||||
|
|
||||||
if (!msg.guild) return;
|
if (!msg.guild || !content.startsWith(prefix) || !msg.channel) return;
|
||||||
|
|
||||||
if ((cmd === 'play' || cmd === 'p') && params[1]) {
|
if ((cmd === 'playm' || cmd === 'playmany' || cmd === 'pm') && params[1]) {
|
||||||
const connection = await checkVoiceChannel(msg);
|
for (const p of params.slice(1)) {
|
||||||
if (!connection) return;
|
await playOrQueue(p, msg.channel, msg);
|
||||||
const url = params.slice(1).join(" ");
|
|
||||||
|
|
||||||
console.log('queueing');
|
|
||||||
msg.channel.send('queueing...');
|
|
||||||
|
|
||||||
let [q, e] = await queueUp(url, msg.guild.id);
|
|
||||||
if (!q && e) [q, e] = await queueUp('ytsearch:' + url, msg.guild.id);
|
|
||||||
if (!q && e) return msg.channel.send(e);
|
|
||||||
const song = queue[msg.guild.id][queue[msg.guild.id].length - 1];
|
|
||||||
|
|
||||||
if (queue[msg.guild.id].length === 1) {
|
|
||||||
const embed = new Discord.MessageEmbed()
|
|
||||||
.setDescription(`now playing: **${song.titleFormat}**`)
|
|
||||||
.setThumbnail(song.thumbnail)
|
|
||||||
.setColor(embedColor)
|
|
||||||
.setAuthor('foggy ♫', foggyImg);
|
|
||||||
|
|
||||||
msg.channel.send({embeds: [embed]});
|
|
||||||
play(queue[msg.guild.id][0], msg.guild.id, connection, msg.channel);
|
|
||||||
} else {
|
|
||||||
let queueString = `queued: **${song.titleFormat}** _at position ${queue[msg.guild.id].length - 1}_`;
|
|
||||||
if (q > 1) queueString = `queued **${q} songs** _at positions ${queue[msg.guild.id].length - q} - ${queue[msg.guild.id].length - 1}_`;
|
|
||||||
|
|
||||||
const embed = new Discord.MessageEmbed()
|
|
||||||
.setDescription(queueString)
|
|
||||||
.setColor(embedColor)
|
|
||||||
.setAuthor('foggy ♫', foggyImg);
|
|
||||||
msg.channel.send({embeds: [embed]});
|
|
||||||
|
|
||||||
if (!players[msg.guild.id] || players[msg.guild.id].state === Voice.AudioPlayerStatus.Idle || players[msg.guild.id].state === Voice.AudioPlayerStatus.Paused) {
|
|
||||||
play(queue[msg.guild.id][0], msg.guild.id, connection, msg.channel);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else if (cmd === 'play' || cmd === 'p') {
|
||||||
|
playOrQueue(params.slice(1).join(' '), msg.channel, msg);
|
||||||
} else if (cmd === 'skip' || cmd === 's') {
|
} else if (cmd === 'skip' || cmd === 's') {
|
||||||
const player = players[msg.guild.id];
|
const player = players[msg.guild.id];
|
||||||
if (!player) return msg.channel.send('the bot isn\'t playing any music!');
|
if (!player) return msg.channel.send('the bot isn\'t playing any music!');
|
||||||
|
@ -246,7 +342,7 @@ bot.on('messageCreate', async (msg) => {
|
||||||
if (q.length === 0) {
|
if (q.length === 0) {
|
||||||
msg.channel.send('no songs queued!');
|
msg.channel.send('no songs queued!');
|
||||||
} else {
|
} else {
|
||||||
msg.channel.send('```' + q.map((m, i) => `${i === 0 ? 'now playing:' : i + '.'} ${m.title}`).join('\n') + '```');
|
msg.channel.send(`${q.length} track${q.length === 1 ? '' : 's'}\ntotal queue length: \`${formatTime(q.map(s => s.duration).reduce((p, c) => p || 0 + c || 0))}\`\n` + '```' + q.slice(0, 10).map((m, i) => `${i === 0 ? 'now playing:' : i + '.'} ${m.title} ${(m.duration !== 0) ? formatTime(m.duration) : ''}`).join('\n') + '```');
|
||||||
}
|
}
|
||||||
} else if (cmd === 'np' || cmd === 'nowplaying') {
|
} else if (cmd === 'np' || cmd === 'nowplaying') {
|
||||||
const song = (queue[msg.guild.id] || [])[0];
|
const song = (queue[msg.guild.id] || [])[0];
|
||||||
|
@ -261,6 +357,7 @@ bot.on('messageCreate', async (msg) => {
|
||||||
progressStr = '🔘 `buffering,,`';
|
progressStr = '🔘 `buffering,,`';
|
||||||
} else {
|
} else {
|
||||||
progressStr = `${'▬'.repeat(Math.floor(Math.abs(progress) * progressLength))}🔘${'▬'.repeat(Math.floor((1 - Math.abs(progress)) * progressLength))}`;
|
progressStr = `${'▬'.repeat(Math.floor(Math.abs(progress) * progressLength))}🔘${'▬'.repeat(Math.floor((1 - Math.abs(progress)) * progressLength))}`;
|
||||||
|
progressStr += `\n\`${formatTime((Date.now() - (playerStartTime[msg.guild.id] || 0)) / 1000)}\`/\`${formatTime(song.duration)}\``
|
||||||
}
|
}
|
||||||
|
|
||||||
let embed = new Discord.MessageEmbed()
|
let embed = new Discord.MessageEmbed()
|
||||||
|
|
Loading…
Reference in New Issue