mirror of
				https://github.com/keanuplayz/TravBot-v3.git
				synced 2024-08-15 02:33:12 +00:00 
			
		
		
		
	Move few fun commands to interactions
This commit is contained in:
		
							parent
							
								
									533ce58647
								
							
						
					
					
						commit
						457de774ce
					
				
					 5 changed files with 131 additions and 5 deletions
				
			
		|  | @ -1,6 +1,34 @@ | ||||||
|  | import {SlashCommandBuilder} from "@discordjs/builders"; | ||||||
|  | import {CommandInteraction} from "discord.js"; | ||||||
| import {Command, NamedCommand} from "onion-lasers"; | import {Command, NamedCommand} from "onion-lasers"; | ||||||
| import {Random} from "../../lib"; | import {Random} from "../../lib"; | ||||||
|  | //Ravioli ravioli...
 | ||||||
|  | //number from 1 to 9
 | ||||||
|  | export const header = new SlashCommandBuilder() | ||||||
|  |     .setDescription("Ravioli ravioli...") | ||||||
|  |     .addIntegerOption((option) => option.setName("number").setDescription("Number from 1 to 9").setRequired(false)); | ||||||
| 
 | 
 | ||||||
|  | export async function handler(interaction: CommandInteraction) { | ||||||
|  |     const {options} = interaction; | ||||||
|  |     try { | ||||||
|  |         //get the number from the options if it fails fallback to the randomizer
 | ||||||
|  |         var response = options.getInteger("number", true); | ||||||
|  |     } catch (e) { | ||||||
|  |         var response = Random.int(1, 10); | ||||||
|  |     } | ||||||
|  |     console.log(response); | ||||||
|  | 
 | ||||||
|  |     interaction.reply({ | ||||||
|  |         embeds: [ | ||||||
|  |             { | ||||||
|  |                 title: "Ravioli ravioli...", | ||||||
|  |                 image: { | ||||||
|  |                     url: `https://raw.githubusercontent.com/keanuplayz/TravBot/master/assets/ravi${response}.png` | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|  |     }); | ||||||
|  | } | ||||||
| export default new NamedCommand({ | export default new NamedCommand({ | ||||||
|     description: "Ravioli ravioli...", |     description: "Ravioli ravioli...", | ||||||
|     usage: "[number from 1 to 9]", |     usage: "[number from 1 to 9]", | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
|  | import {SlashCommandBuilder} from "@discordjs/builders"; | ||||||
|  | import {CommandInteraction} from "discord.js"; | ||||||
| import {NamedCommand, RestCommand} from "onion-lasers"; | import {NamedCommand, RestCommand} from "onion-lasers"; | ||||||
| 
 |  | ||||||
| const letters: {[letter: string]: string[]} = { | const letters: {[letter: string]: string[]} = { | ||||||
|     a: "aáàảãạâấầẩẫậăắằẳẵặ".split(""), |     a: "aáàảãạâấầẩẫậăắằẳẵặ".split(""), | ||||||
|     e: "eéèẻẽẹêếềểễệ".split(""), |     e: "eéèẻẽẹêếềểễệ".split(""), | ||||||
|  | @ -29,8 +30,22 @@ function transform(str: string) { | ||||||
|     return out; |     return out; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| let phrase = "I have no currently set phrase!"; | export const header = new SlashCommandBuilder() | ||||||
|  |     .setDescription("Transforms your text into vietnamese.") | ||||||
|  |     .addStringOption((option) => | ||||||
|  |         option.setName("text").setDescription("The text you want to transform").setRequired(true) | ||||||
|  |     ); | ||||||
| 
 | 
 | ||||||
|  | export async function handler(interaction: CommandInteraction) { | ||||||
|  |     const {options} = interaction; | ||||||
|  |     const response = options.getString("text", true); | ||||||
|  | 
 | ||||||
|  |     interaction.reply(transform(response)); | ||||||
|  |     // You might notice the remove message code is missing here. It's because reactions collectors are
 | ||||||
|  |     //not a thing in interactions. The best alternative would buttons
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | let phrase = "I have no currently set phrase!"; | ||||||
| export default new NamedCommand({ | export default new NamedCommand({ | ||||||
|     description: "Transforms your text into vietnamese.", |     description: "Transforms your text into vietnamese.", | ||||||
|     usage: "([text])", |     usage: "([text])", | ||||||
|  |  | ||||||
|  | @ -1,7 +1,38 @@ | ||||||
|  | import {SlashCommandBuilder} from "@discordjs/builders"; | ||||||
| import {NamedCommand, RestCommand} from "onion-lasers"; | import {NamedCommand, RestCommand} from "onion-lasers"; | ||||||
| import {MessageEmbed} from "discord.js"; | import {MessageEmbed, CommandInteraction} from "discord.js"; | ||||||
| import urban from "relevant-urban"; | import urban from "relevant-urban"; | ||||||
| 
 | 
 | ||||||
|  | export const header = new SlashCommandBuilder() | ||||||
|  |     .setDescription("Gives you a definition of the inputted word.") | ||||||
|  |     .addStringOption((option) => | ||||||
|  |         option.setName("word").setDescription("The word you're looking for").setRequired(true) | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  | export async function handler(interaction: CommandInteraction) { | ||||||
|  |     const {options} = interaction; | ||||||
|  |     await interaction.reply("Working on it...."); | ||||||
|  |     const response = options.getString("word", true); | ||||||
|  |     // [Bug Fix]: Use encodeURIComponent() when emojis are used: "TypeError [ERR_UNESCAPED_CHARACTERS]: Request path contains unescaped characters"
 | ||||||
|  |     urban(encodeURIComponent(response)) | ||||||
|  |         .then(async (res) => { | ||||||
|  |             const embed = new MessageEmbed() | ||||||
|  |                 .setColor(0x1d2439) | ||||||
|  |                 .setTitle(res.word) | ||||||
|  |                 .setURL(res.urbanURL) | ||||||
|  |                 .setDescription(`**Definition:**\n*${res.definition}*\n\n**Example:**\n*${res.example}*`) | ||||||
|  |                 // [Bug Fix] When an embed field is empty (if the author field is missing, like the top entry for "british"): "RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values may not be empty."
 | ||||||
|  |                 .addField("Author", res.author || "N/A", true) | ||||||
|  |                 .addField("Rating", `**\`Upvotes: ${res.thumbsUp} | Downvotes: ${res.thumbsDown}\`**`); | ||||||
|  |             if (res.tags && res.tags.length > 0 && res.tags.join(" ").length < 1024) | ||||||
|  |                 embed.addField("Tags", res.tags.join(", "), true); | ||||||
|  |             interaction.editReply("Here you go!"); | ||||||
|  |             await interaction.editReply({embeds: [embed]}); | ||||||
|  |         }) | ||||||
|  |         .catch(async () => { | ||||||
|  |             await interaction.editReply("Sorry, that word was not found."); | ||||||
|  |         }); | ||||||
|  | } | ||||||
| export default new NamedCommand({ | export default new NamedCommand({ | ||||||
|     description: "Gives you a definition of the inputted word.", |     description: "Gives you a definition of the inputted word.", | ||||||
|     run: "Please input a word.", |     run: "Please input a word.", | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
|  | import {SlashCommandBuilder} from "@discordjs/builders"; | ||||||
|  | import {CommandInteraction} from "discord.js"; | ||||||
| import {NamedCommand, RestCommand} from "onion-lasers"; | import {NamedCommand, RestCommand} from "onion-lasers"; | ||||||
| 
 |  | ||||||
| const vaporwave = (() => { | const vaporwave = (() => { | ||||||
|     const map = new Map<string, string>(); |     const map = new Map<string, string>(); | ||||||
|     const vaporwave = |     const vaporwave = | ||||||
|  | @ -21,6 +22,17 @@ function getVaporwaveText(text: string): string { | ||||||
|     return output; |     return output; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | export const header = new SlashCommandBuilder() | ||||||
|  |     .setDescription("Transforms your text into vaporwave.") | ||||||
|  |     .addStringOption((option) => | ||||||
|  |         option.setName("text").setDescription("The text you want to vaporwave.").setRequired(true) | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  | export async function handler(interaction: CommandInteraction) { | ||||||
|  |     const {options} = interaction; | ||||||
|  |     const response = options.getString("text", true); | ||||||
|  |     await interaction.reply(getVaporwaveText(response)); | ||||||
|  | } | ||||||
| export default new NamedCommand({ | export default new NamedCommand({ | ||||||
|     description: "Transforms your text into vaporwave.", |     description: "Transforms your text into vaporwave.", | ||||||
|     run: "You need to enter some text!", |     run: "You need to enter some text!", | ||||||
|  |  | ||||||
|  | @ -1,7 +1,47 @@ | ||||||
| import {NamedCommand, RestCommand} from "onion-lasers"; | import {NamedCommand, RestCommand} from "onion-lasers"; | ||||||
| import {MessageEmbed} from "discord.js"; | import {SlashCommandBuilder} from "@discordjs/builders"; | ||||||
|  | import {MessageEmbed, CommandInteraction} from "discord.js"; | ||||||
| import {find} from "weather-js"; | import {find} from "weather-js"; | ||||||
| 
 | 
 | ||||||
|  | export const header = new SlashCommandBuilder() | ||||||
|  |     .setDescription("Shows weather info of specified location.") | ||||||
|  |     .addStringOption((option) => | ||||||
|  |         option.setName("location").setDescription("The location you're looking for").setRequired(true) | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  | export async function handler(interaction: CommandInteraction) { | ||||||
|  |     const {options} = interaction; | ||||||
|  |     await interaction.reply("Working on it...."); | ||||||
|  |     const response = options.getString("location", true); | ||||||
|  | 
 | ||||||
|  |     find( | ||||||
|  |         { | ||||||
|  |             search: response, | ||||||
|  |             degreeType: "C" | ||||||
|  |         }, | ||||||
|  |         async function (error, result) { | ||||||
|  |             if (error) return await interaction.editReply(error.toString()); | ||||||
|  |             if (result.length === 0) return await interaction.editReply("No city found by that name."); | ||||||
|  |             var current = result[0].current; | ||||||
|  |             var location = result[0].location; | ||||||
|  |             const embed = new MessageEmbed() | ||||||
|  |                 .setDescription(`**${current.skytext}**`) | ||||||
|  |                 .setAuthor(`Weather for ${current.observationpoint}`) | ||||||
|  |                 .setThumbnail(current.imageUrl) | ||||||
|  |                 .setColor(0x00ae86) | ||||||
|  |                 .addField("Timezone", `UTC${location.timezone}`, true) | ||||||
|  |                 .addField("Degree Type", "C", true) | ||||||
|  |                 .addField("Temperature", `${current.temperature} Degrees`, true) | ||||||
|  |                 .addField("Feels like", `${current.feelslike} Degrees`, true) | ||||||
|  |                 .addField("Winds", current.winddisplay, true) | ||||||
|  |                 .addField("Humidity", `${current.humidity}%`, true); | ||||||
|  |             interaction.editReply("Here you go!"); // remove the working on message
 | ||||||
|  |             return await interaction.editReply({ | ||||||
|  |                 embeds: [embed] | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     ); | ||||||
|  | } | ||||||
| export default new NamedCommand({ | export default new NamedCommand({ | ||||||
|     description: "Shows weather info of specified location.", |     description: "Shows weather info of specified location.", | ||||||
|     run: "You need to provide a city.", |     run: "You need to provide a city.", | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue