From 2da5e1aa75aa039d77bf148ad260821a9644a0c0 Mon Sep 17 00:00:00 2001 From: Vylpes Date: Mon, 5 Sep 2022 18:07:32 +0100 Subject: [PATCH] Feature/vba 52 (#175) * Add say command (#174) Co-authored-by: Ethan Lane Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/vylbot-app/pulls/174 * Add repo and funding link to about message (#176) Reviewed-on: https://gitea.vylpes.xyz/RabbitLabs/vylbot-app/pulls/176 * Add other subreddits to bunny command * Fix changes requested --- .env.template | 5 ++++- package.json | 9 ++++++--- src/commands/about.ts | 31 +++++++++++++++++++++++++++---- src/commands/bunny.ts | 15 +++++++++++++-- src/helpers/embeds/PublicEmbed.ts | 6 +++--- 5 files changed, 53 insertions(+), 13 deletions(-) diff --git a/.env.template b/.env.template index 88ad8df..7f24eab 100644 --- a/.env.template +++ b/.env.template @@ -9,5 +9,8 @@ BOT_TOKEN= BOT_VER=3.1 BOT_AUTHOR=Vylpes -BOT_DATE=08 Aug 2022 +BOT_DATE=04 Sep 2022 BOT_OWNERID=147392775707426816 + +ABOUT_FUNDING= +ABOUT_REPO= diff --git a/package.json b/package.json index b45562f..b7cfc34 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vylbot-app", - "version": "3.0.4", + "version": "3.1.0", "description": "A discord bot made for Vylpes' Den", "main": "./dist/vylbot", "typings": "./dist", @@ -13,11 +13,14 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/Vylpes/vylbot-app.git" + "url": "https://github.com/Vylpes/vylbot-app" }, "author": "Vylpes", "license": "MIT", - "bugs": "https://github.com/Vylpes/vylbot-app/issues", + "bugs": { + "url": "https://github.com/Vylpes/vylbot-app/issues", + "email": "helpdesk@vylpes.com" + }, "homepage": "https://github.com/Vylpes/vylbot-app", "dependencies": { "@types/jest": "^27.0.3", diff --git a/src/commands/about.ts b/src/commands/about.ts index 4246113..1391da9 100644 --- a/src/commands/about.ts +++ b/src/commands/about.ts @@ -1,3 +1,5 @@ +import { Emoji, MessageActionRow, MessageButton } from "discord.js"; +import { MessageButtonStyles } from "discord.js/typings/enums"; import { ICommandContext } from "../contracts/ICommandContext"; import PublicEmbed from "../helpers/embeds/PublicEmbed"; import { Command } from "../type/command"; @@ -9,11 +11,32 @@ export default class About extends Command { } public override async execute(context: ICommandContext) { + const fundingLink = process.env.ABOUT_FUNDING; + const repoLink = process.env.ABOUT_REPO; + const embed = new PublicEmbed(context, "About", "") - .addField("Version", process.env.BOT_VER!) - .addField("Author", process.env.BOT_AUTHOR!) - .addField("Date", process.env.BOT_DATE!); + .addField("Version", process.env.BOT_VER!, true) + .addField("Author", process.env.BOT_AUTHOR!, true) + .addField("Date", process.env.BOT_DATE!, true); + + const row = new MessageActionRow(); + + if (repoLink) { + row.addComponents( + new MessageButton() + .setURL(repoLink) + .setLabel("Repo") + .setStyle(MessageButtonStyles.LINK)); + } + + if (fundingLink) { + row.addComponents( + new MessageButton() + .setURL(fundingLink) + .setLabel("Funding") + .setStyle(MessageButtonStyles.LINK)); + } - await embed.SendToCurrentChannel(); + await embed.SendToCurrentChannel({ components: [row] }); } } \ No newline at end of file diff --git a/src/commands/bunny.ts b/src/commands/bunny.ts index 47bafa6..a41e179 100644 --- a/src/commands/bunny.ts +++ b/src/commands/bunny.ts @@ -12,13 +12,24 @@ export default class Bunny extends Command { } public override async execute(context: ICommandContext) { - const result = await randomBunny('rabbits', 'hot'); + const subreddits = [ + 'rabbits', + 'bunnieswithhats', + 'buncomfortable', + 'bunnytongues', + 'dutchbunnymafia', + ]; + + const random = Math.floor(Math.random() * subreddits.length); + const selectedSubreddit = subreddits[random]; + + const result = await randomBunny(selectedSubreddit, 'hot'); if (result.IsSuccess) { const embed = new PublicEmbed(context, result.Result!.Title, "") .setImage(result.Result!.Url) .setURL(`https://reddit.com${result.Result!.Permalink}`) - .setFooter({ text: `r/Rabbits · ${result.Result!.Ups} upvotes` }); + .setFooter({ text: `r/${selectedSubreddit} · ${result.Result!.Ups} upvotes` }); await embed.SendToCurrentChannel(); } else { diff --git a/src/helpers/embeds/PublicEmbed.ts b/src/helpers/embeds/PublicEmbed.ts index 84be5c9..059826b 100644 --- a/src/helpers/embeds/PublicEmbed.ts +++ b/src/helpers/embeds/PublicEmbed.ts @@ -1,4 +1,4 @@ -import { MessageEmbed, Permissions, TextChannel } from "discord.js"; +import { MessageEmbed, MessageOptions, Permissions, TextChannel } from "discord.js"; import { ICommandContext } from "../../contracts/ICommandContext"; export default class PublicEmbed extends MessageEmbed { @@ -20,7 +20,7 @@ export default class PublicEmbed extends MessageEmbed { } // Send methods - public async SendToCurrentChannel() { + public async SendToCurrentChannel(options?: MessageOptions) { const channel = this.context.message.channel as TextChannel; const botMember = await this.context.message.guild?.members.fetch({ user: this.context.message.client.user! }); @@ -30,6 +30,6 @@ export default class PublicEmbed extends MessageEmbed { if (!permissions.has(Permissions.FLAGS.SEND_MESSAGES)) return; - this.context.message.channel.send({ embeds: [ this ]}); + this.context.message.channel.send({ embeds: [ this ], ...options}); } } \ No newline at end of file