Switch to pure typescript and update packages

This commit is contained in:
Marsn3 2025-01-29 06:49:10 +01:00
parent 1d865a49b8
commit e60d1772ba
11 changed files with 2743 additions and 3747 deletions

2
.gitignore vendored
View file

@ -139,3 +139,5 @@ devenv.local.nix
# pre-commit # pre-commit
.pre-commit-config.yaml .pre-commit-config.yaml
settings.json

View file

@ -1,3 +0,0 @@
{
"deno.enable": true
}

View file

@ -1,12 +0,0 @@
{
"$schema": "https://biomejs.dev/schemas/1.6.0/schema.json",
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
}
}
}

View file

@ -1,8 +0,0 @@
{
"tasks": {
"dev": "deno run --watch main.ts"
},
"imports": {
"@std/assert": "jsr:@std/assert@1"
}
}

1263
deno.lock generated

File diff suppressed because it is too large Load diff

View file

@ -3,10 +3,10 @@
"devenv": { "devenv": {
"locked": { "locked": {
"dir": "src/modules", "dir": "src/modules",
"lastModified": 1729087493, "lastModified": 1738095186,
"owner": "cachix", "owner": "cachix",
"repo": "devenv", "repo": "devenv",
"rev": "d612b77ff73912cd82e58256ab5e84d5904abef7", "rev": "87439ffe45de40f9029b0ba178ad923b3f8fc538",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -19,10 +19,10 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696426674, "lastModified": 1733328505,
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -53,10 +53,10 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1728888510, "lastModified": 1737885589,
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a3c0b3b21515f74fd2665903d4ce6bc4dc81c77c", "rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -66,35 +66,19 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1728909085,
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c0b1da36f7c34a7146501f684e9ebdf15d2bebf8",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": { "pre-commit-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"gitignore": "gitignore", "gitignore": "gitignore",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ]
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1729104314, "lastModified": 1737465171,
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "3c3e88f0f544d6bb54329832616af7eb971b6be6", "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -5,47 +5,11 @@
inputs, inputs,
... ...
}: { }: {
# https://devenv.sh/basics/
env.GREET = "devenv";
# https://devenv.sh/packages/
packages = [pkgs.git]; packages = [pkgs.git];
# https://devenv.sh/languages/ # https://devenv.sh/languages/
# languages.rust.enable = true; languages.typescript = {
languages.deno = {
enable = true; enable = true;
}; };
# https://devenv.sh/processes/ dotenv.disableHint = true;
# processes.cargo-watch.exec = "cargo-watch";
# https://devenv.sh/services/
# services.postgres.enable = true;
# https://devenv.sh/scripts/
scripts.hello.exec = ''
echo hello from $GREET
'';
enterShell = ''
hello
git --version
'';
# https://devenv.sh/tasks/
# tasks = {
# "myproj:setup".exec = "mytool build";
# "devenv:enterShell".after = [ "myproj:setup" ];
# };
# https://devenv.sh/tests/
enterTest = ''
echo "Running tests"
git --version | grep --color=auto "${pkgs.git.version}"
'';
# https://devenv.sh/pre-commit-hooks/
# pre-commit.hooks.shellcheck.enable = true;
# See full reference at https://devenv.sh/reference/options/
} }

4523
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,34 +1,32 @@
{ {
"name": "kiku", "name": "kiku",
"main": "src/index.js", "main": "src/index.ts",
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "tsc", "build": "tsc",
"start": "node dist/index.js", "dev": "tsx watch src/index.ts"
"watch": "tsc watch src/index.ts",
"dev": "nodemon src/index.ts"
}, },
"devDependencies": { "devDependencies": {
"@biomejs/biome": "1.6.0", "@biomejs/biome": "^1.9.4",
"@tsconfig/node18": "^18.2.2", "@tsconfig/node18": "^18.2.4",
"@types/node": "^18.7.18", "@types/node": "^22.12.0",
"@typescript-eslint/parser": "^5.62.0", "@typescript-eslint/parser": "^8.22.0",
"eslint": "^8.57.0", "eslint": "^9.19.0",
"prettier": "^3.2.5", "prettier": "^3.4.2",
"prettier-eslint": "^16.3.0", "prettier-eslint": "^16.3.0",
"tsx": "^4.7.1", "tsx": "^4.19.2",
"typescript": "^4.9.5" "typescript": "^5.7.3"
}, },
"engines": { "engines": {
"node": ">=18" "node": ">=18"
}, },
"dependencies": { "dependencies": {
"discord.js": "^14.14.1", "discord.js": "^14.17.3",
"dotenv": "^16.4.5", "dotenv": "^16.4.7",
"kazagumo": "^3.0.1", "kazagumo": "^3.2.2",
"kazagumo-deezer": "^2.0.2", "kazagumo-deezer": "^2.0.2",
"kazagumo-spotify": "^2.0.1", "kazagumo-spotify": "^2.1.1",
"pretty-ms": "^9.0.0", "pretty-ms": "^9.2.0",
"shoukaku": "^4.0.1" "shoukaku": "^4.1.1"
} }
} }

View file

@ -1,533 +0,0 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
exports.__esModule = true;
var discord_js_1 = require("discord.js");
var shoukaku_1 = require("shoukaku");
var kazagumo_1 = require("kazagumo");
var kazagumo_spotify_1 = require("kazagumo-spotify");
var pretty_ms_1 = require("pretty-ms");
var Guilds = discord_js_1.GatewayIntentBits.Guilds, GuildVoiceStates = discord_js_1.GatewayIntentBits.GuildVoiceStates, GuildMessages = discord_js_1.GatewayIntentBits.GuildMessages, MessageContent = discord_js_1.GatewayIntentBits.MessageContent;
var dotenv = require("dotenv");
var fs_1 = require("fs");
dotenv.config();
if (!process.env.SPOTIFY_ID || !process.env.SPOTIFY_SECRET) {
throw "Spotify Credentials missing";
}
var settings;
try {
settings = JSON.parse((0, fs_1.readFileSync)("./settings.json", "utf8")); // Load data
}
catch (e) {
settings = { requestChannels: {} }; // Init if no data found
}
var Nodes = [
{
name: "lavalink",
url: "localhost:2333",
auth: "youshallnotpass",
secure: false
},
];
var client = new discord_js_1.Client({
intents: [Guilds, GuildVoiceStates, GuildMessages, MessageContent]
});
var kazagumo = new kazagumo_1.Kazagumo({
defaultSearchEngine: "youtube",
send: function (guildId, payload) {
var guild = client.guilds.cache.get(guildId);
if (guild)
guild.shard.send(payload);
},
plugins: [
new kazagumo_spotify_1["default"]({
clientId: process.env.SPOTIFY_ID,
clientSecret: process.env.SPOTIFY_SECRET,
playlistPageLimit: 1,
albumPageLimit: 1,
searchLimit: 10,
searchMarket: "US"
}),
]
}, new shoukaku_1.Connectors.DiscordJS(client), Nodes);
client.on("ready", function () {
// console.log(client)
console.log("".concat(client.user.tag, "\u00B7Ready!"));
});
kazagumo.shoukaku.on("ready", function (name) {
return console.log("Lavalink ".concat(name, ": Ready!"));
});
kazagumo.shoukaku.on("error", function (name, error) {
return console.error("Lavalink ".concat(name, ": Error Caught,"), error);
});
kazagumo.shoukaku.on("close", function (name, code, reason) {
return console.warn("Lavalink ".concat(name, ": Closed, Code ").concat(code, ", Reason ").concat(reason || "No reason"));
});
kazagumo.shoukaku.on("debug", function (name, info) {
return console.debug("Lavalink ".concat(name, ": Debug,"), info);
});
kazagumo.shoukaku.on("disconnect", function (name, count) {
// if (moved) return;
// players.map((player:any) => player.connection.disconnect());
console.warn("Lavalink ".concat(name, ": Disconnected"));
});
kazagumo.on("playerStart", function (player, track) {
if (!player.textId)
return;
var channel = client.channels.cache.get(player.textId);
if (!channel)
return;
if (channel.type === discord_js_1.ChannelType.GuildText) {
channel
.send({
content: "Now playing **".concat(track.title, "** by **").concat(track.author, "**")
})
.then(function (x) {
//TODO: Use embed message instead
player.data.set("message", x);
setTimeout(function () { return x["delete"](); }, 3000);
});
}
});
kazagumo.on("playerEnd", function (player) {
var _a;
//TODO: Use embed message instead
var embed = new discord_js_1.EmbedBuilder()
.setAuthor({
name: "Moe",
iconURL: "https://cdn.m3.fyi/MoeLogo.gif"
})
.setTitle("Nothing is being played right now")
.setDescription("Enter message to search")
.addFields({
name: "Author",
value: "None",
inline: true
}, {
name: "Duration",
value: "NaN:NaN",
inline: true
})
.setColor("#ff0047");
(_a = player.data.get("message")) === null || _a === void 0 ? void 0 : _a.edit({ embed: [embed] });
});
kazagumo.on("playerEmpty", function (player) {
if (!player.textId)
return;
var channel = client.channels.cache.get(player.textId);
if (!channel)
return;
if (channel.type === discord_js_1.ChannelType.GuildText) {
//TODO: Use embed message instead
channel
.send({ content: "Destroyed player due to inactivity." })
.then(function (x) {
player.data.set("message", x);
setTimeout(function () { return x["delete"](); }, 3000);
});
}
player.destroy();
});
client.on("messageCreate", function (msg) { return __awaiter(void 0, void 0, void 0, function () {
var cmd, _a, play, stop_1, skip, loop, shuffle, seek, previous, row, row2, embed, response, answer_1, controls, answer_2, channelId, messageId, channel_1, query, channel_2, answer_3, player, result, answer_4, _i, _b, track, play, stop_2, skip, loop, shuffle, seek, previous, row, row2, track_author, track_duration, track_thumbnail, embed, response;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:
// console.log(msg.content);
if (msg.author.bot)
return [2 /*return*/];
if (!msg.guild)
return [2 /*return*/];
if (!msg.member)
return [2 /*return*/];
if (msg.channel.type !== discord_js_1.ChannelType.GuildText)
return [2 /*return*/];
if (!msg.content.startsWith(".")) return [3 /*break*/, 9];
cmd = msg.content.split(".")[1];
_a = cmd;
switch (_a) {
case "init": return [3 /*break*/, 1];
}
return [3 /*break*/, 7];
case 1:
if (!(msg.guildId && msg.channelId)) return [3 /*break*/, 6];
if (!!settings.requestChannels[msg.guildId]) return [3 /*break*/, 4];
return [4 /*yield*/, msg["delete"]()];
case 2:
_c.sent();
play = new discord_js_1.ButtonBuilder()
.setCustomId("play")
.setLabel("Play/Pause")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943073793122355");
stop_1 = new discord_js_1.ButtonBuilder()
.setCustomId("stop")
.setLabel("Stop Playing")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943074258694184");
skip = new discord_js_1.ButtonBuilder()
.setCustomId("skip")
.setLabel("Skip Song")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943074233516072");
loop = new discord_js_1.ButtonBuilder()
.setCustomId("loop")
.setLabel("Loop Song")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943073667289099");
shuffle = new discord_js_1.ButtonBuilder()
.setCustomId("shuffle")
.setLabel("Shuffle Queue")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("890325437962678352");
seek = new discord_js_1.ButtonBuilder()
.setCustomId("seek")
.setLabel("Seek Forward")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("890325511878889504");
previous = new discord_js_1.ButtonBuilder()
.setCustomId("previous")
.setLabel("Previous Song")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("890325512071831562");
row = new discord_js_1.ActionRowBuilder().addComponents(play, stop_1, skip, loop);
row2 = new discord_js_1.ActionRowBuilder().addComponents(shuffle, seek, previous);
embed = new discord_js_1.EmbedBuilder()
.setAuthor({
name: "Moe",
iconURL: "https://cdn.m3.fyi/MoeLogo.gif"
})
.setTitle("Nothing is being played right now")
.setDescription("Enter message to search")
.addFields({
name: "Author",
value: "None",
inline: true
}, {
name: "Duration",
value: "NaN:NaN",
inline: true
})
.setColor("#ff0047");
return [4 /*yield*/, msg.channel.send({
embeds: [embed],
components: [row, row2]
})];
case 3:
response = _c.sent();
settings.requestChannels[msg.guildId] = {
channelId: msg.channelId,
messageId: response.id
};
console.log(settings.requestChannels[msg.guildId]);
(0, fs_1.writeFileSync)("./settings.json", JSON.stringify(settings)); // Save count to file
return [2 /*return*/];
case 4: return [4 /*yield*/, msg.reply("Already initialized")];
case 5:
answer_1 = _c.sent();
console.log(answer_1);
setTimeout(function () { return msg["delete"](); }, 3000);
setTimeout(function () { return answer_1["delete"](); }, 3000);
_c.label = 6;
case 6: return [3 /*break*/, 8];
case 7: return [3 /*break*/, 8];
case 8: return [2 /*return*/];
case 9:
if (!(msg.channel.name === "moe-song-requests")) return [3 /*break*/, 20];
controls = void 0;
if (!!settings.requestChannels[msg.guild.id]) return [3 /*break*/, 11];
return [4 /*yield*/, msg.reply("Use .init first")];
case 10:
answer_2 = _c.sent();
console.log(answer_2);
setTimeout(function () { return msg["delete"](); }, 3000);
setTimeout(function () { return answer_2["delete"](); }, 3000);
return [2 /*return*/];
case 11:
channelId = settings.requestChannels[msg.guild.id].channelId;
messageId = settings.requestChannels[msg.guild.id].messageId;
channel_1 = msg.guild.channels.cache.get(channelId);
if (!(channel_1 && channel_1.type === discord_js_1.ChannelType.GuildText)) return [3 /*break*/, 13];
return [4 /*yield*/, channel_1.messages.fetch(messageId)];
case 12:
controls = _c.sent();
_c.label = 13;
case 13:
query = msg.content;
channel_2 = msg.member.voice.channel;
if (!!channel_2) return [3 /*break*/, 15];
return [4 /*yield*/, msg.reply("You need to be in a voice channel to use this command!")];
case 14:
answer_3 = _c.sent();
setTimeout(function () { return answer_3["delete"](); }, 3000);
return [2 /*return*/];
case 15: return [4 /*yield*/, kazagumo.createPlayer({
guildId: msg.guild.id,
textId: msg.channel.id,
voiceId: channel_2.id,
volume: 40
})];
case 16:
player = _c.sent();
player.data.set("message", controls);
console.log("Player created");
return [4 /*yield*/, kazagumo.search(query, { requester: msg.author })];
case 17:
result = _c.sent();
if (!!result.tracks.length) return [3 /*break*/, 19];
return [4 /*yield*/, msg.reply("No results found!")];
case 18:
answer_4 = _c.sent();
setTimeout(function () { return answer_4["delete"](); }, 3000);
_c.label = 19;
case 19:
if (result.type === "PLAYLIST")
for (_i = 0, _b = result.tracks; _i < _b.length; _i++) {
track = _b[_i];
player.queue.add(track);
}
else
player.queue.add(result.tracks[0]);
play = new discord_js_1.ButtonBuilder()
.setCustomId("play")
.setLabel("Play/Pause")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943073793122355");
stop_2 = new discord_js_1.ButtonBuilder()
.setCustomId("stop")
.setLabel("Stop Playing")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943074258694184");
skip = new discord_js_1.ButtonBuilder()
.setCustomId("skip")
.setLabel("Skip Song")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943074233516072");
loop = new discord_js_1.ButtonBuilder()
.setCustomId("loop")
.setLabel("Loop Song")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("889943073667289099");
shuffle = new discord_js_1.ButtonBuilder()
.setCustomId("shuffle")
.setLabel("Shuffle Queue")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("890325437962678352");
seek = new discord_js_1.ButtonBuilder()
.setCustomId("seek")
.setLabel("Seek Forward")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("890325511878889504");
previous = new discord_js_1.ButtonBuilder()
.setCustomId("previous")
.setLabel("Previous Song")
.setStyle(discord_js_1.ButtonStyle.Secondary)
.setEmoji("890325512071831562");
row = new discord_js_1.ActionRowBuilder().addComponents(play, stop_2, skip, loop);
row2 = new discord_js_1.ActionRowBuilder().addComponents(shuffle, seek, previous);
track_author = void 0;
if (result.tracks[0].author) {
track_author = result.tracks[0].author;
}
else {
track_author = "";
}
track_duration = void 0;
if (result.tracks[0].length) {
track_duration = (0, pretty_ms_1["default"])(result.tracks[0].length);
}
else {
track_duration = "NaN:NaN";
}
track_thumbnail = void 0;
if (result.tracks[0].thumbnail) {
track_thumbnail = result.tracks[0].thumbnail.toString();
}
else {
track_thumbnail = "NaN:NaN";
}
embed = new discord_js_1.EmbedBuilder()
.setAuthor({
name: "Now playing",
iconURL: "https://cdn.m3.fyi/MoeLogo.gif"
})
.setTitle(result.type === "PLAYLIST"
? "Playing ".concat(result.tracks.length, " from ").concat(result.playlistName)
: "Playing ".concat(result.tracks[0].title))
.setDescription("[".concat(result.tracks[0].title, "](").concat(result.tracks[0].uri, ")"))
.addFields({
name: "Author",
value: track_author,
inline: true
}, {
name: "Duration",
value: track_duration,
inline: true
})
.setThumbnail(track_thumbnail)
.setColor("#ff0047");
if (!player.playing && !player.paused)
player.play();
if (controls) {
response = controls.edit({
embeds: [embed],
components: [row, row2]
});
}
setTimeout(function () { return msg["delete"](); }, 3000);
return [2 /*return*/];
case 20: return [2 /*return*/];
}
});
}); });
client.on("interactionCreate", function (interaction) { return __awaiter(void 0, void 0, void 0, function () {
var guild, member, voiceId, player, _a, track;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
console.log(interaction.id);
if (!interaction.isButton()) return [3 /*break*/, 20];
guild = client.guilds.cache.get(interaction.guildId);
member = guild === null || guild === void 0 ? void 0 : guild.members.cache.get(interaction.member.user.id);
voiceId = member === null || member === void 0 ? void 0 : member.voice.channel.id;
return [4 /*yield*/, kazagumo.createPlayer({
guildId: interaction.guild.id,
textId: interaction.channel.id,
voiceId: voiceId
})];
case 1:
player = _b.sent();
_a = interaction.customId;
switch (_a) {
case "play": return [3 /*break*/, 2];
case "stop": return [3 /*break*/, 4];
case "skip": return [3 /*break*/, 6];
case "loop": return [3 /*break*/, 8];
case "shuffle": return [3 /*break*/, 13];
case "seek": return [3 /*break*/, 15];
case "previous": return [3 /*break*/, 17];
}
return [3 /*break*/, 19];
case 2:
player.pause(!player.paused);
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Toggled Pause"
})];
case 3:
_b.sent();
return [3 /*break*/, 20];
case 4:
// player.disconnect();
player.destroy();
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Stopped Playing"
})];
case 5:
_b.sent();
return [3 /*break*/, 20];
case 6:
player.skip();
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Skipped Song"
})];
case 7:
_b.sent();
return [3 /*break*/, 20];
case 8:
if (!(player.loop != "none")) return [3 /*break*/, 10];
player.setLoop("none");
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Disabled Looping"
})];
case 9:
_b.sent();
return [3 /*break*/, 12];
case 10:
player.setLoop("track");
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Started Looping"
})];
case 11:
_b.sent();
_b.label = 12;
case 12: return [3 /*break*/, 20];
case 13:
player.queue.shuffle();
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Shuffled Queue"
})];
case 14:
_b.sent();
return [3 /*break*/, 20];
case 15:
// let position = player.position / 1000;
// position = position | 0;
// console.log(position);
// player.seek(position + 5);
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Does not work :pensive:"
})];
case 16:
// let position = player.position / 1000;
// position = position | 0;
// console.log(position);
// player.seek(position + 5);
_b.sent();
return [3 /*break*/, 20];
case 17:
track = player.getPrevious();
return [4 /*yield*/, interaction.reply({
ephemeral: true,
content: "Queued previous song"
})];
case 18:
_b.sent();
player.play(track[0]);
return [3 /*break*/, 20];
case 19: return [3 /*break*/, 20];
case 20: return [2 /*return*/];
}
});
}); });
client.login(process.env.TOKEN);