diff --git a/.gitignore b/.gitignore index 9c57953..096fc1e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -/target settings.json node_modules \ No newline at end of file diff --git a/readme.md b/readme.md index 505e484..6e90608 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,20 @@ # discord-cli discord but as a shell + +## running + +make a `settings.json` file + +```json +{ + "token": "YOUR DISCORD TOKEN" +} +``` + +then run + +```sh +npm i +npm run +``` diff --git a/target/index.js b/target/index.js new file mode 100644 index 0000000..1115105 --- /dev/null +++ b/target/index.js @@ -0,0 +1,202 @@ +"use strict"; +exports.__esModule = true; +var tslib_1 = require("tslib"); +var readline = require("readline"); +var discord_js_1 = require("discord.js"); +var fs_1 = require("fs"); +var path = require("path"); +var settings = JSON.parse((0, fs_1.readFileSync)(path.resolve('./settings.json')).toString()); +var rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); +function exitNicely() { + client.destroy(); + rl.close(); + process.exit(); +} +var DiscordLocation = (function () { + function DiscordLocation(prompt, parent) { + this.prompt = ''; + this.exitListener = function () { }; + if (parent) + prompt = parent.prompt + "/" + prompt; + if (prompt) + this.prompt = prompt; + this.parent = parent; + this.runPrompt(); + } + DiscordLocation.prototype.runPrompt = function () { + return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { + var answer; + var _this = this; + return (0, tslib_1.__generator)(this, function (_a) { + switch (_a.label) { + case 0: return [4, new Promise(function (p) { return rl.question(_this.prompt + "> ", p); })]; + case 1: + answer = _a.sent(); + this.handleRepl(answer, function () { return _this.runPrompt(); }); + return [2]; + } + }); + }); + }; + DiscordLocation.prototype.handleRepl = function (rawArgs, done) { + var _this = this; + var argsArr = rawArgs.split(' '), cmd = argsArr.shift() || '', args = argsArr.join(' '); + switch (cmd) { + case 'exit': + this.exit(); + break; + default: + this.runCommand(cmd, args, done)["catch"](function (e) { + console.error(e); + _this.runPrompt(); + }); + } + }; + DiscordLocation.prototype.onExit = function (listener) { + this.exitListener = listener; + }; + DiscordLocation.prototype.exit = function () { + this.exitListener(); + }; + DiscordLocation.prototype.runCommand = function (cmd, args, done) { + return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { + return [2]; + }); }); + }; + return DiscordLocation; +}()); +var ClientLocation = (function (_super) { + (0, tslib_1.__extends)(ClientLocation, _super); + function ClientLocation(client) { + var _a; + var _this = _super.call(this, (_a = client.user) === null || _a === void 0 ? void 0 : _a.username, null) || this; + _this.client = client; + return _this; + } + ClientLocation.prototype.runCommand = function (cmd, args, done) { + return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { + var _a, g, gloc; + return (0, tslib_1.__generator)(this, function (_b) { + switch (_b.label) { + case 0: + _a = cmd; + switch (_a) { + case 'ls': return [3, 1]; + case 'dir': return [3, 1]; + case 'guilds': return [3, 1]; + case 'join': return [3, 2]; + } + return [3, 4]; + case 1: + this.client.guilds.cache.forEach(function (g) { + console.log(g.id + ": " + ((g === null || g === void 0 ? void 0 : g.name) || 'ERROR')); + }); + done(); + return [3, 5]; + case 2: return [4, this.client.guilds.fetch(args)]; + case 3: + g = _b.sent(); + gloc = new GuildLocation(this, g); + gloc.onExit(done); + return [3, 5]; + case 4: + console.log(cmd + " is invalid"); + done(); + _b.label = 5; + case 5: return [2]; + } + }); + }); + }; + return ClientLocation; +}(DiscordLocation)); +var GuildLocation = (function (_super) { + (0, tslib_1.__extends)(GuildLocation, _super); + function GuildLocation(parent, guild) { + var _this = _super.call(this, guild.name, parent) || this; + _this.guild = guild; + return _this; + } + GuildLocation.prototype.runCommand = function (cmd, args, done) { + return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { + var _a, c, gloc; + return (0, tslib_1.__generator)(this, function (_b) { + switch (_b.label) { + case 0: + _a = cmd; + switch (_a) { + case 'ls': return [3, 1]; + case 'dir': return [3, 1]; + case 'channels': return [3, 1]; + case 'join': return [3, 2]; + } + return [3, 4]; + case 1: + this.guild.channels.cache.forEach(function (c) { + console.log(c.id + ": " + ((c === null || c === void 0 ? void 0 : c.name) || 'ERROR')); + }); + done(); + return [3, 5]; + case 2: return [4, this.guild.channels.fetch(args)]; + case 3: + c = _b.sent(); + gloc = new TextChannelLocation(this, c); + gloc.onExit(done); + return [3, 5]; + case 4: + console.log(cmd + " is invalid"); + done(); + _b.label = 5; + case 5: return [2]; + } + }); + }); + }; + return GuildLocation; +}(DiscordLocation)); +var TextChannelLocation = (function (_super) { + (0, tslib_1.__extends)(TextChannelLocation, _super); + function TextChannelLocation(parent, channel) { + var _this = _super.call(this, "" + channel.name, parent) || this; + _this.channel = channel; + return _this; + } + TextChannelLocation.prototype.runCommand = function (cmd, args, done) { + return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { + var _a; + return (0, tslib_1.__generator)(this, function (_b) { + switch (_b.label) { + case 0: + _a = cmd; + switch (_a) { + case 'say': return [3, 1]; + } + return [3, 3]; + case 1: return [4, this.channel.send(args)]; + case 2: + _b.sent(); + done(); + return [3, 4]; + case 3: + console.log(cmd + " is invalid"); + done(); + _b.label = 4; + case 4: return [2]; + } + }); + }); + }; + return TextChannelLocation; +}(DiscordLocation)); +var client = new discord_js_1.Client({ intents: discord_js_1.Intents.FLAGS.GUILDS }); +client.login(settings.token); +client.on('ready', function () { + var clientRepl = new ClientLocation(client); + clientRepl.onExit(function () { + exitNicely(); + }); +}); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/target/index.js.map b/target/index.js.map new file mode 100644 index 0000000..c36c3c5 --- /dev/null +++ b/target/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file