Skip to content

Commit

Permalink
New Slash Commands and Legacy Commands
Browse files Browse the repository at this point in the history
leomotors committed Apr 22, 2022

Unverified

This user has not yet uploaded their public signing key.
1 parent 5b84210 commit d6c1824
Showing 9 changed files with 365 additions and 256 deletions.
1 change: 0 additions & 1 deletion .gitattributes

This file was deleted.

6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -2,6 +2,12 @@

Notable Changes for Salim Bot will be noted here!

## [4.0.1150] - 2022-04-22

- Added Slash Commands: getquote and searchquote

- Added Legacy Command: Asking for quotes count

## [4.0.1120] - 2022-04-20

- Add Slash Command: train
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "salim-bot",
"version": "4.0.1120",
"version": "4.0.1150",
"description": "This bot is Salim. Whenever you trigger it, It become mad.",
"type": "module",
"main": "dist/bot.js",
@@ -35,10 +35,10 @@
"dependencies": {
"@discordjs/opus": "^0.7.0",
"chalk": "^5.0.1",
"cocoa-discord-utils": "^1.4.2",
"cocoa-discord-utils": "^1.6.0",
"discord.js": "^13.6.0",
"libsodium-wrappers": "^0.7.10",
"s-bot-framework": "^1.0.402",
"s-bot-framework": "^1.0.420",
"uuid": "^8.3.2"
}
}
229 changes: 13 additions & 216 deletions src/bot.ts
Original file line number Diff line number Diff line change
@@ -1,32 +1,14 @@
import { CocoaVersion } from "cocoa-discord-utils/meta";
import { SlashCenter } from "cocoa-discord-utils/slash";

// * For beautiful text ✨✨
import chalk from "chalk";
// * Import used Stuff
import {
ActivityLoader,
Console,
ComputedLoader,
DataLoader,
FrameWorkVersion,
MultiLoader,
OnlineLoader,
SBotClient,
SongLoader,
Response,
sLogger,
SongAppearance,
} from "s-bot-framework";
import { sLogger } from "s-bot-framework";

import QuizCog from "./commands/quiz";
import Salim from "./commands/salim";
import { style } from "./commands/styles";

// ! WARNING: LEGACY CODE
import { sclient } from "./legacy";

// * Salim Bot: Bot that is running in my group's server 24/7
// * Great Example for S-Bot Framework

const setupStart = performance.now();

@@ -36,217 +18,32 @@ console.log(
"✨✨"
);

// * Create Client, token is automatically grabbed from process.env.DISCORD_TOKEN
// * Make sure you added your token in .env
const client = new SBotClient();

// * Using Slash Commands with Cocoa Discord Utils 🍫
const salimCenter = new SlashCenter(
client.client,
sclient.client,
process.env.GUILD_IDS?.split(",")
);
salimCenter.addCogs(new Salim(), new QuizCog(client.client));
salimCenter.addCogs(new Salim(), new QuizCog(sclient.client));
salimCenter.useHelpCommand(style);
salimCenter.on("error", async (name, err, ctx) => {
await ctx.channel?.send(
`ที่คำสี่งของฉันผิดพลาดต้องเป็นฝีมือของทักษิณแน่เลย ${err}`
`คำสั่ง ${name} ทำงานผิดพลาด ดิฉันคิดว่าต้องเป็นฝีมือของ${
Math.random() >= 0.5 ? "ทักษิณ" : "ไอทอน"
}แน่เลย\n${err}`
);
});
salimCenter.validateCommands();

client.client.on("ready", () => {
salimCenter.syncCommands();
});

// * Load Stuff from Files & Online Source
const keywords = new DataLoader("data/keywords.json", "ชังชาติ");
const localquotes = new DataLoader("data/morequotes.json", "วาทกรรมสลิ่ม");
const awesome_salim_quotes = new OnlineLoader(
"https://watasalim.vercel.app/api/quotes",
"quotes",
(t) => t.body
);
awesome_salim_quotes.setAutoRefresh(24 * 60);

const facebook = new DataLoader(
"data/facebook.json",
"คนรักสถาบัน",
(t) => `ดิฉันแนะนำให้คุณไปติดตาม ${t.name} นะ เพื่อคุณจะได้ตาสว่าง ${t.url}`
);

// * Combined multiple data into One Category
const combinedQuotes = new MultiLoader([
{
loader: localquotes,
label: "Local Quotes",
},
{
loader: awesome_salim_quotes,
label: "Awesome Salim Quotes",
},
]);

// * Response on Keywords ex. Answering questions

// * Introducing itself
client.useResponse(
new Response({
trigger: { mention: true, keywords: ["แนะนำตัว"] },
response: {
loader: new ComputedLoader(
() =>
`ส วั ส ดี ค รั บ ท่านสมาชิกชมรมคนรักสถาบันทุกท่าน กระผมสลิ่มบอทเวอร์ชั่น ${process.env.npm_package_version}\nขับเคลื่อนโดยสลิ่มบอทเฟรมเวิร์คเวอร์ชั่น ${FrameWorkVersion} และโกโก้ดิสคอร์ดยูทิลิตี้เวอร์ชั่น ${CocoaVersion}\nท่านสามารถช่วยร่วมแรงร่วมใจในการพัฒนาผมได้ที่ https://github.com/Leomotors/Salim-Bot`
),
reply: true,
audio: true,
},
})
);

// * Facebook Recommendation Feature
client.useResponse(
new Response({
trigger: { mention: true, keywords: ["fb", "เฟส", "facebook"] },
response: {
loader: facebook,
reply: true,
audio: true,
},
})
);

// * Create Response Variable (instead of putting directly to the function)
// * It is to keep later for getting data of triggered words
const ชังชาติ = new Response({
trigger: { keywords },
response: {
loader: combinedQuotes,
react: "😡",
audio: true,
},
});
client.useResponse(ชังชาติ);

// * ComputedLoader allows simple dynamic string
client.useResponse(
new Response({
trigger: { mention: true, keywords: ["ผิด"] },
response: {
loader: new ComputedLoader(
() =>
`พวกคุณผิดที่พูดคำว่า ${ชังชาติ.triggered} ถือเป็นการคุกคามสถาบันอย่างยิ่ง`
),
reply: true,
audio: true,
},
})
);

// * Bot Activity
client.useComputedActivity({
type: "PLAYING",
name: `Salim Bot ${process.env.npm_package_version}`,
salimCenter.on("interaction", (name, ctx) => {
sLogger.log(`[Slash Command ${name}] Invoked by ${ctx.user.tag}`);
});
const activityLoader = new ActivityLoader("data/activity.json", "activities");
client.useActivities(activityLoader);

// * Use Voice in Corgi Swift Jutsu Mode
client.useVoice({
fallback: {
no_channel: "นี่คุณจะให้ฉันไปเปิดเพลงให้ผีฟังหรอ",
stage_channel: "ฉันไม่เข้าคลับเฮาส์ นั่นมันที่ของคนชังชาติ",
not_joinable: "คุณอย่าทำตัวสามกีบ ที่เอาแต่แบนคนอื่นได้ไหม",
internal:
"ขออภัยแต่เกิดปัญหาภายในขึ้น ดิฉันคิดว่าน่าจะเป็นฝีมือของทักษิณ",
reply: true,
},
sclient.client.on("ready", async () => {
await salimCenter.validateCommands();
await salimCenter.syncCommands();
});
// ! NOTE: For SOD (Legacy) Mode, it is removed

// * DJSalima 参上!!!
const easterEggSong = new SongLoader("data/songs.json", "easter_egg");
const รักชาติSong = new SongLoader("data/songs.json", "รักชาติ");
client.useDJ(
[
// * Bot Songs
{
loader: easterEggSong,
category: "Easter Egg",
appearance: SongAppearance.RANDOM_ONLY,
onPlay: "Easter Egg นะจ๊ะ!! 🤩🤩 ขอให้สนุกกับ {song_name}",
},
{
loader: รักชาติSong,
category: "เพลงรักชาติ",
appearance: SongAppearance.EVERYWHERE,
onPlay: "ขอเสริมความรักชาติให้กับคุณด้วย {song_name} 💛💛",
},
],
{
// * Bot Commands
play: {
prefixes: ["!djsalima"],
reply: true,
onQueued: {
tts: "แต่รอแป๊ปนะจ๊ะ พอดีกำลังด่าพวกชังชาติอยู่ ด่าเสร็จจะรีบเปิดเพลงให้ทันที",
song: "แต่รอแป๊ปนะจ๊ะ พอดีกำลังเปิดเพลงอยู่ ถึงคิวแล้วจะเปิดให้",
},
search_fail:
"ขออภัย แต่เนื่องจากเพลงดังกล่าว ไม่ได้อยู่ในแฟ้มข้อมูลเพลงรักชาติ ดิฉันคงเปิดให้พวกคุณฟังไม่ได้",
search_multiple_result:
"มีหลายเพลงที่ตรงกัน กรุณาโปรดเลือกเพลงของท่านให้เจาะจงกว่านี้",
now_playing: {
// * Salim Embed
send_embed: true,
color: "YELLOW", // 💛💛💛
title: "กำลังเล่น",
requested_by: "คนรักสถาบัน",
duration: "ความยาวเพลง",
link: "ลิงก์",
click_here: "คลิ๊กที่นี่นะจ๊ะ",
footer: "น้อน DJSalima เล่นเพลงรักชาติเพื่อชาติ ศาสน์ กษัตริย์ ด้วยหัวใจ 💛💛💛",
},
},
skip: {
prefixes: ["!skip"],
already_empty: "จะให้ฉันไปข้ามอะไร ฉันไม่ได้พูดอะไรอยู่เลย!!!",
react: "⏩",
},
clear: {
prefixes: ["!clear"],
already_empty: "มันมีอะไรอยู่ในคิวด้วยหรอ หัดคิดบ้างสิ พวกสามกีบ!!",
react: "✅",
},
overrides: {
direct_youtube: {
admin_only: true,
prefixes: ["-yt", "--youtube"],
reply: true,
message: "รับทราบค่ะ",
},
},
}
);

// * Console, used to logout properly
const ctrlConsole = new Console(client);

// * Add Loaders to Console to be able to reload while bot is running
ctrlConsole.addLoader(
keywords,
localquotes,
awesome_salim_quotes,
facebook,
activityLoader,
easterEggSong,
รักชาติSong
);
// * And Add it to Client, as Client is main Class running this Bot!
client.useConsole(ctrlConsole);

// * Done! That's it required for this bot!
sLogger.log(
`✨✨ Async Setup Done in ${(performance.now() - setupStart).toFixed(
`✨✨ Synchronous Setup Done in ${(performance.now() - setupStart).toFixed(
3
)} ms`,
"SUCCESS"
10 changes: 5 additions & 5 deletions src/commands/quiz.ts
Original file line number Diff line number Diff line change
@@ -40,7 +40,7 @@ const quizes = Loader.fromFile<Quiz>("Quiz Loader", "./data/quiz.json");

class QuizManager {
private quiz: Quiz;
private readonly quizId = uuid().split("-")[0];
private readonly quizId = uuid().split("-")[0]!;
private originalContext: CommandInteraction;
private currentChoiceOrder: string[] = [];
private currentIndex = 0;
@@ -51,7 +51,7 @@ class QuizManager {
makeEmbed(index: number): [CocoaEmbed, MessageActionRow] {
this.currentIndex = index;
const questions = this.quiz.questions;
const question = questions[index];
const question = questions[index]!;

const choices = [question.correct, ...question.wrong].sort(
(_, __) => Math.random() - 0.5
@@ -100,11 +100,11 @@ class QuizManager {
return;
}

const userchoice = ctx.values[0];
const userchoice = ctx.values[0]!;

if (
this.currentChoiceOrder[+userchoice] ==
this.quiz.questions[this.currentIndex].correct
this.quiz.questions[this.currentIndex]!.correct
) {
this.score++;
}
@@ -159,7 +159,7 @@ class QuizManager {
}

constructor(ctx: CommandInteraction, index: number) {
this.quiz = quizes.data[index];
this.quiz = quizes.data[index]!;
this.quiz.questions.sort((_, __) => Math.random() - 0.5);
this.originalContext = ctx;
}
80 changes: 76 additions & 4 deletions src/commands/salim.ts
Original file line number Diff line number Diff line change
@@ -14,15 +14,25 @@ import chalk from "chalk";
import fs from "fs/promises";
import { FrameWorkVersion } from "s-bot-framework";

import { combinedQuotes, sclient } from "../legacy";

import { style } from "./styles";

function trim(str: string) {
return str.replace(/\s/g, "").toLowerCase();
}

function lim(str: string, len = 100) {
return str.length > len ? str.slice(0, len - 3) + "..." : str;
}

export default class Salim extends CogSlashClass {
constructor() {
super("Salim Cog", "Main Slash Cog of Salim Bot");
super("Salim Cog", "คำสั่งหลักๆของบอทสลิ่ม");
}

@SlashCommand(
AutoBuilder("Get Status of Salim Bot").addBooleanOption(Ephemeral())
AutoBuilder("รับสถานะของบอทสลิ่ม").addBooleanOption(Ephemeral())
)
async status(ctx: CommandInteraction) {
const ephemeral = getEphemeral(ctx);
@@ -41,8 +51,8 @@ export default class Salim extends CogSlashClass {
}

@SlashCommand(
AutoBuilder("Add quote เข้าคลัง").addStringOption(
CocoaOption("quote", "quote คุ ณ ภ า พ ที่ต้องการนำเข้าคลัง")
AutoBuilder("เพิ่มประโยค คุ ณ ภ า พ เข้าคลัง").addStringOption(
CocoaOption("quote", "ประโยค คุ ณ ภ า พ ที่ต้องการนำเข้าคลัง")
)
)
async train(ctx: CommandInteraction) {
@@ -78,4 +88,66 @@ export default class Salim extends CogSlashClass {
"กระผมน้อนสลิ่มจะจดจำแล้วนำไปใช้ครับ ทั้งนี้กรุณาฝากเรียนไปที่เจ้าของบอทให้รีโหลดด้วย"
);
}

@SlashCommand(
AutoBuilder("รับประโยคคุณภาพจากดัชนี").addIntegerOption(
CocoaOption("index", "ดัชนีของประโยคคุณภาพที่ต้องการ", true)
)
)
async getquote(ctx: CommandInteraction) {
const index = ctx.options.getInteger("index", true);
const quote = combinedQuotes.getData()[index];

if (!quote) {
const r = "มันไม่มีคำพูดที่ตำแหน่งนั้นนะ หัดหาข้อมูลบ้าง อีสามกีบ";
sclient.corgiSwiftJutsu(ctx, r);
await ctx.reply(r);
return;
}

sclient.corgiSwiftJutsu(ctx, quote);
await ctx.reply(`${quote} [${combinedQuotes.getRefIndex(index)}]`);
}

@SlashCommand(
AutoBuilder("ค้นหาประโยคคุณภาพ")
.addStringOption(CocoaOption("query", "คำที่ต้องการค้นหา", true))
.addBooleanOption(Ephemeral())
)
async searchquote(ctx: CommandInteraction) {
const ephemeral = getEphemeral(ctx);
const query = ctx.options.getString("query", true);

const results = Object.entries(combinedQuotes.getData()).filter((q) =>
trim(q[1]).includes(trim(query))
);

let description = "";
for (const [i, q] of results.slice(0, 10)) {
description += `💭 ${lim(q).replaceAll(
"*",
"\\*"
)} **[${combinedQuotes.getRefIndex(+i)}]**\n`;
}

if (!description) {
description = "ไม่พบคำที่ค้นหา";
}

if (results.length > 10) {
description += `หมายเหตุ: มีอีก ${results.length - 10} คำที่พบ`;
}

const emb = style
.use(ctx)
.setTitle("ผลการค้นหาคำพูดสลิ่มเจ๋งๆ")
.setDescription(description)
.addFields({
name: "ขอบคุณที่มาคุณภาพ",
value: "[วาร์ป](https://watasalim.vercel.app/)",
inline: true,
});

await ctx.reply({ embeds: [emb], ephemeral });
}
}
229 changes: 229 additions & 0 deletions src/legacy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
import { CocoaVersion } from "cocoa-discord-utils/meta";

import {
ActivityLoader,
Console,
ComputedLoader,
DataLoader,
FrameWorkVersion,
MultiLoader,
OnlineLoader,
SBotClient,
SongLoader,
Response,
SongAppearance,
} from "s-bot-framework";

// ! WARNING: LEGACY CODE
// ! This file contains stuff related to s-bot-framework (Legacy part of Salim Bot)
// ! PS: In case you are looking to use s-bot-framework, good luck dealing
// ! with what I wrote many months ago

// * Create Client, token is automatically grabbed from process.env.DISCORD_TOKEN
// * (Importing s-bot-framework will run dotenv/config)
// * Make sure you added your token in .env
export const sclient = new SBotClient();

// * Import data from files
const keywords = new DataLoader("data/keywords.json", "ชังชาติ");
const localquotes = new DataLoader("data/morequotes.json", "วาทกรรมสลิ่ม");
const awesome_salim_quotes = new OnlineLoader(
"https://watasalim.vercel.app/api/quotes",
"quotes",
(t) => t.body
);
awesome_salim_quotes.setAutoRefresh(24 * 60);
const facebook = new DataLoader(
"data/facebook.json",
"คนรักสถาบัน",
(t) => `ดิฉันแนะนำให้คุณไปติดตาม ${t.name} นะ เพื่อคุณจะได้ตาสว่าง ${t.url}`
);

// * Combined multiple data into One Category
export const combinedQuotes = new MultiLoader([
{
loader: localquotes,
label: "Local Quotes",
},
{
loader: awesome_salim_quotes,
label: "Awesome Salim Quotes",
},
]);

// * -- Response on Keywords ex. Answering questions -- * //

// * Introducing itself
sclient.useResponse(
new Response({
trigger: { mention: true, keywords: ["แนะนำตัว"] },
response: {
loader: new ComputedLoader(
() =>
`ส วั ส ดี ค รั บ ท่านสมาชิกชมรมคนรักสถาบันทุกท่าน กระผมสลิ่มบอทเวอร์ชั่น ${process.env.npm_package_version}\nขับเคลื่อนโดยสลิ่มบอทเฟรมเวิร์คเวอร์ชั่น ${FrameWorkVersion} และโกโก้ดิสคอร์ดยูทิลิตี้เวอร์ชั่น ${CocoaVersion}\nท่านสามารถช่วยร่วมแรงร่วมใจในการพัฒนาผมได้ที่ https://github.com/Leomotors/Salim-Bot`
),
reply: true,
audio: true,
},
})
);

sclient.useResponse(
new Response({
trigger: { mention: true, keywords: ["คำ"] },
response: {
loader: new ComputedLoader(
() =>
`มันก็จะมีอยู่ ${
keywords.getData().length
} คำที่พวกสามกีบชอบพูดซึ่งทำให้ผมไม่สบายใจ ผมเองก็มีอยู่ ${
combinedQuotes.getData().length
} ประโยคที่ผมเตรียมนำไปใช้ด่าพวกสามกีบ`
),
reply: true,
audio: true,
},
})
);

// * Facebook Recommendation Feature
sclient.useResponse(
new Response({
trigger: { mention: true, keywords: ["fb", "เฟส", "facebook"] },
response: {
loader: facebook,
reply: true,
audio: true,
},
})
);

// * Create Response Variable (instead of putting directly to the function)
// * It is to keep later for getting data of triggered words
const ชังชาติ = new Response({
trigger: { keywords },
response: {
loader: combinedQuotes,
react: "😡",
audio: true,
},
});
sclient.useResponse(ชังชาติ);

// * ComputedLoader allows simple dynamic string
sclient.useResponse(
new Response({
trigger: { mention: true, keywords: ["ผิด"] },
response: {
loader: new ComputedLoader(
() =>
`พวกคุณผิดที่พูดคำว่า ${ชังชาติ.triggered} ถือเป็นการคุกคามสถาบันอย่างยิ่ง`
),
reply: true,
audio: true,
},
})
);

// * Bot Activity
sclient.useComputedActivity({
type: "PLAYING",
name: `Salim Bot ${process.env.npm_package_version}`,
});
const activityLoader = new ActivityLoader("data/activity.json", "activities");
sclient.useActivities(activityLoader);

// * Use Voice in Corgi Swift Jutsu Mode
sclient.useVoice({
fallback: {
no_channel: "นี่คุณจะให้ฉันไปเปิดเพลงให้ผีฟังหรอ",
stage_channel: "ฉันไม่เข้าคลับเฮาส์ นั่นมันที่ของคนชังชาติ",
not_joinable: "คุณอย่าทำตัวสามกีบ ที่เอาแต่แบนคนอื่นได้ไหม",
internal:
"ขออภัยแต่เกิดปัญหาภายในขึ้น ดิฉันคิดว่าน่าจะเป็นฝีมือของทักษิณ",
reply: true,
},
});
// ! NOTE: For SOD (Legacy) Mode, it is removed

// * DJSalima 参上!!!
const easterEggSong = new SongLoader("data/songs.json", "easter_egg");
const รักชาติSong = new SongLoader("data/songs.json", "รักชาติ");
sclient.useDJ(
[
// * Bot Songs
{
loader: easterEggSong,
category: "Easter Egg",
appearance: SongAppearance.RANDOM_ONLY,
onPlay: "Easter Egg นะจ๊ะ!! 🤩🤩 ขอให้สนุกกับ {song_name}",
},
{
loader: รักชาติSong,
category: "เพลงรักชาติ",
appearance: SongAppearance.EVERYWHERE,
onPlay: "ขอเสริมความรักชาติให้กับคุณด้วย {song_name} 💛💛",
},
],
{
// * Bot Commands
play: {
prefixes: ["!djsalima"],
reply: true,
onQueued: {
tts: "แต่รอแป๊ปนะจ๊ะ พอดีกำลังด่าพวกชังชาติอยู่ ด่าเสร็จจะรีบเปิดเพลงให้ทันที",
song: "แต่รอแป๊ปนะจ๊ะ พอดีกำลังเปิดเพลงอยู่ ถึงคิวแล้วจะเปิดให้",
},
search_fail:
"ขออภัย แต่เนื่องจากเพลงดังกล่าว ไม่ได้อยู่ในแฟ้มข้อมูลเพลงรักชาติ ดิฉันคงเปิดให้พวกคุณฟังไม่ได้",
search_multiple_result:
"มีหลายเพลงที่ตรงกัน กรุณาโปรดเลือกเพลงของท่านให้เจาะจงกว่านี้",
now_playing: {
// * Salim Embed
send_embed: true,
color: "YELLOW", // 💛💛💛
title: "กำลังเล่น",
requested_by: "คนรักสถาบัน",
duration: "ความยาวเพลง",
link: "ลิงก์",
click_here: "คลิ๊กที่นี่นะจ๊ะ",
footer: "น้อน DJSalima เล่นเพลงรักชาติเพื่อชาติ ศาสน์ กษัตริย์ ด้วยหัวใจ 💛💛💛",
},
},
skip: {
prefixes: ["!skip"],
already_empty: "จะให้ฉันไปข้ามอะไร ฉันไม่ได้พูดอะไรอยู่เลย!!!",
react: "⏩",
},
clear: {
prefixes: ["!clear"],
already_empty: "มันมีอะไรอยู่ในคิวด้วยหรอ หัดคิดบ้างสิ พวกสามกีบ!!",
react: "✅",
},
overrides: {
direct_youtube: {
admin_only: true,
prefixes: ["-yt", "--youtube"],
reply: true,
message: "รับทราบค่ะ",
},
},
}
);

// * Console, used to logout properly
const ctrlConsole = new Console(sclient);

// * Add Loaders to Console to be able to reload while bot is running
ctrlConsole.addLoader(
keywords,
localquotes,
awesome_salim_quotes,
facebook,
activityLoader,
easterEggSong,
รักชาติSong
);

// * And Add it to Client, as Client is main Class running this Bot!
sclient.useConsole(ctrlConsole);
3 changes: 2 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
@@ -10,7 +10,8 @@
"moduleResolution": "node",
"experimentalDecorators": true,
"incremental": true,
"strictNullChecks": true
"strictNullChecks": true,
"noUncheckedIndexedAccess": true
},
"include": ["./src/**/*"]
}
57 changes: 31 additions & 26 deletions yarn.lock
Original file line number Diff line number Diff line change
@@ -266,17 +266,17 @@
"@discordjs/node-pre-gyp" "^0.4.2"
node-addon-api "^4.2.0"

"@discordjs/voice@0.8.0":
version "0.8.0"
resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.8.0.tgz#5d790fc25b883698f6eb7762efe1af00b6440947"
integrity sha512-o0JfVLMs3eLjUzPf6oxMydEeum40I7xzfUc66SLN+RrKpSAsTbngf5qnCF53nm+KDNSvrwg1AZqNm4LEAdxJIA==
"@discordjs/voice@0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.9.0.tgz#f9c2dbc3c5e98a0f66278e23b29fdaee51c5e9d9"
integrity sha512-fSAYtPCEfIyG56hC2cRJuyfvQGr+aawSssLCqYg70vZ51dKO4spEKOB8V6vNMP5HnEplbhmxkB3YbshFKtnCQQ==
dependencies:
"@types/ws" "^8.2.0"
discord-api-types "^0.26.1"
"@types/ws" "^8.5.3"
discord-api-types "^0.29.0"
prism-media "^1.3.2"
tiny-typed-emitter "^2.1.0"
tslib "^2.3.1"
ws "^8.4.2"
ws "^8.5.0"

"@eslint/eslintrc@^1.2.1":
version "1.2.1"
@@ -379,7 +379,7 @@
resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc"
integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==

"@types/ws@^8.2.0", "@types/ws@^8.2.2":
"@types/ws@^8.2.2", "@types/ws@^8.5.3":
version "8.5.3"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==
@@ -625,14 +625,14 @@ chownr@^2.0.0:
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==

cocoa-discord-utils@^1.4.2:
version "1.4.2"
resolved "https://registry.yarnpkg.com/cocoa-discord-utils/-/cocoa-discord-utils-1.4.2.tgz#e62ec93d65fc6519b453298b1f5cc77529566fb1"
integrity sha512-14cLDmVAX24h06+HC21O3wtNHFA9uiDTqCPulXmz/yd6RK4RTVMUTxhZL02yaLeQ/0g+9lNeYRmnIcCeZ02obg==
cocoa-discord-utils@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/cocoa-discord-utils/-/cocoa-discord-utils-1.6.0.tgz#9f9741d5e0e26bb1ee9a3e0016473f014d83092d"
integrity sha512-9sHRVmBcUu6MLM28JTDPII+BhAHr/W3ou4ALzuHnFyLgnLaSUoHOx4zC8j7uuSnnpksi4x3iwmwghKUxQRO4Pw==
dependencies:
"@discordjs/builders" "^0.12.0"
chalk "4.1.2"
commander "^9.1.0"
commander "^9.2.0"
discord.js "^13.6.0"

color-convert@^1.9.0:
@@ -671,7 +671,7 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"

commander@^9.1.0:
commander@^9.2.0:
version "9.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-9.2.0.tgz#6e21014b2ed90d8b7c9647230d8b7a94a4a419a9"
integrity sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==
@@ -746,6 +746,11 @@ discord-api-types@^0.26.0, discord-api-types@^0.26.1:
resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.26.1.tgz#726f766ddc37d60da95740991d22cb6ef2ed787b"
integrity sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ==

discord-api-types@^0.29.0:
version "0.29.0"
resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.29.0.tgz#8346352b623ddd8d8eed386b6eb758e2d82d6005"
integrity sha512-Ekq1ICNpOTVajXKZguNFrsDeTmam+ZeA38txsNLZnANdXUjU6QBPIZLUQTC6MzigFGb0Tt8vk4xLnXmzv0shNg==

discord.js@^13.6.0:
version "13.6.0"
resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-13.6.0.tgz#d8a8a591dbf25cbcf9c783d5ddf22c4694860475"
@@ -774,9 +779,9 @@ dotenv@^16.0.0:
integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==

electron-to-chromium@^1.4.84:
version "1.4.114"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.114.tgz#d85ec0808dd50b0cf6e6b262480ffd385f71c873"
integrity sha512-gRwLpVYWHGbERPU6o8pKfR168V6enWEXzZc6zQNNXbgJ7UJna+9qzAIHY94+9KOv71D/CH+QebLA9pChD2q8zA==
version "1.4.118"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz#2d917c71712dac9652cc01af46c7d0bd51552974"
integrity sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==

emoji-regex@^8.0.0:
version "8.0.0"
@@ -1506,12 +1511,12 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"

s-bot-framework@^1.0.402:
version "1.0.402"
resolved "https://registry.yarnpkg.com/s-bot-framework/-/s-bot-framework-1.0.402.tgz#c5851572a2697a37aae1b40637d83204a7c3b732"
integrity sha512-HGXluZ/wzx4w9Z042yRXISdlskwNJlrq2nzSK49KfP9+U15xOIuIKoHClyLX2crWVrvcQGr/0ItlyXiDdg3N4w==
s-bot-framework@^1.0.420:
version "1.0.420"
resolved "https://registry.yarnpkg.com/s-bot-framework/-/s-bot-framework-1.0.420.tgz#fb46ebfee2d51e4d873b2d51cc58bd4dc3806bcd"
integrity sha512-z4ME3BEKC7aeA266Rs+cFCzCNEM3ecqVfZunWcvuZzGTcDr0HuThGtFXL073i3WT+We8rXFNv8Xeyr1KkxrVJw==
dependencies:
"@discordjs/voice" "0.8.0"
"@discordjs/voice" "0.9.0"
chalk "5.0.1"
discord.js "^13.6.0"
dotenv "^16.0.0"
@@ -1678,9 +1683,9 @@ tslib@^1.8.1:
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==

tslib@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==

tsutils@^3.21.0:
version "3.21.0"
@@ -1770,7 +1775,7 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=

ws@^8.4.0, ws@^8.4.2:
ws@^8.4.0, ws@^8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==

0 comments on commit d6c1824

Please sign in to comment.