mirror of
				https://github.com/keanuplayz/TravBot-v3.git
				synced 2024-08-15 02:33:12 +00:00 
			
		
		
		
	Added more functionality to the react command
This commit is contained in:
		
							parent
							
								
									5165c5ec4b
								
							
						
					
					
						commit
						5665a91af4
					
				
					 1 changed files with 59 additions and 5 deletions
				
			
		|  | @ -1,18 +1,72 @@ | ||||||
| import Command from "../../core/command"; | import Command from "../../core/command"; | ||||||
| import {CommonLibrary} from "../../core/lib"; | import {CommonLibrary} from "../../core/lib"; | ||||||
|  | import {Message, Channel, TextChannel} from "discord.js"; | ||||||
| 
 | 
 | ||||||
| export default new Command({ | export default new Command({ | ||||||
|     description: |     description: | ||||||
|         "Reacts to the a previous message in your place. You have to react with the same emote before the bot removes that reaction.", |         "Reacts to the a previous message in your place. You have to react with the same emote before the bot removes that reaction.", | ||||||
|     usage: "react <emote name> (<message ID / distance>)", |     usage: 'react <emotes...> (<distance / message ID / "Copy ID" / "Copy Message Link">)', | ||||||
|     async run($: CommonLibrary): Promise<any> { |     async run($: CommonLibrary): Promise<any> { | ||||||
|         let target; |         let target: Message | undefined; | ||||||
|         let distance = 1; |         let distance = 1; | ||||||
| 
 | 
 | ||||||
|         if ($.args.length >= 2) { |         if ($.args.length >= 2) { | ||||||
|             const last = $.args[$.args.length - 1]; |             const last = $.args[$.args.length - 1]; // Because this is optional, do not .pop() unless you're sure it's a message link indicator.
 | ||||||
|  |             const URLPattern = /^(?:https:\/\/discord.com\/channels\/(\d{17,19})\/(\d{17,19})\/(\d{17,19}))$/; | ||||||
|  |             const copyIDPattern = /^(?:(\d{17,19})-(\d{17,19}))$/; | ||||||
| 
 | 
 | ||||||
|             if (/\d{17,19}/g.test(last)) { |             // https://discord.com/channels/<Guild ID>/<Channel ID>/<Message ID> ("Copy Message Link" Button)
 | ||||||
|  |             if (URLPattern.test(last)) { | ||||||
|  |                 const match = URLPattern.exec(last)!; | ||||||
|  |                 const guildID = match[1]; | ||||||
|  |                 const channelID = match[2]; | ||||||
|  |                 const messageID = match[3]; | ||||||
|  |                 let guild = $.guild; | ||||||
|  |                 let channel: Channel | undefined = $.channel; | ||||||
|  | 
 | ||||||
|  |                 if (guild?.id !== guildID) { | ||||||
|  |                     try { | ||||||
|  |                         guild = await $.client.guilds.fetch(guildID); | ||||||
|  |                     } catch { | ||||||
|  |                         return $.channel.send(`\`${guildID}\` is an invalid guild ID!`); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 if (channel.id !== channelID) channel = guild.channels.cache.get(channelID); | ||||||
|  |                 if (!channel) return $.channel.send(`\`${channelID}\` is an invalid channel ID!`); | ||||||
|  | 
 | ||||||
|  |                 if ($.message.id !== messageID) { | ||||||
|  |                     try { | ||||||
|  |                         target = await (channel as TextChannel).messages.fetch(messageID); | ||||||
|  |                     } catch { | ||||||
|  |                         return $.channel.send(`\`${messageID}\` is an invalid message ID!`); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 $.args.pop(); | ||||||
|  |             } | ||||||
|  |             // <Channel ID>-<Message ID> ("Copy ID" Button)
 | ||||||
|  |             else if (copyIDPattern.test(last)) { | ||||||
|  |                 const match = copyIDPattern.exec(last)!; | ||||||
|  |                 const channelID = match[1]; | ||||||
|  |                 const messageID = match[2]; | ||||||
|  |                 let channel: Channel | undefined = $.channel; | ||||||
|  | 
 | ||||||
|  |                 if (channel.id !== channelID) channel = $.guild?.channels.cache.get(channelID); | ||||||
|  |                 if (!channel) return $.channel.send(`\`${channelID}\` is an invalid channel ID!`); | ||||||
|  | 
 | ||||||
|  |                 if ($.message.id !== messageID) { | ||||||
|  |                     try { | ||||||
|  |                         target = await (channel as TextChannel).messages.fetch(messageID); | ||||||
|  |                     } catch { | ||||||
|  |                         return $.channel.send(`\`${messageID}\` is an invalid message ID!`); | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  | 
 | ||||||
|  |                 $.args.pop(); | ||||||
|  |             } | ||||||
|  |             // <Message ID>
 | ||||||
|  |             else if (/^\d{17,19}$/.test(last)) { | ||||||
|                 try { |                 try { | ||||||
|                     target = await $.channel.messages.fetch(last); |                     target = await $.channel.messages.fetch(last); | ||||||
|                 } catch { |                 } catch { | ||||||
|  | @ -22,7 +76,7 @@ export default new Command({ | ||||||
|                 $.args.pop(); |                 $.args.pop(); | ||||||
|             } |             } | ||||||
|             // The entire string has to be a number for this to match. Prevents leaCheeseAmerican1 from triggering this.
 |             // The entire string has to be a number for this to match. Prevents leaCheeseAmerican1 from triggering this.
 | ||||||
|             else if (/^\d+$/g.test(last)) { |             else if (/^\d+$/.test(last)) { | ||||||
|                 distance = parseInt(last); |                 distance = parseInt(last); | ||||||
| 
 | 
 | ||||||
|                 if (distance >= 0 && distance <= 99) $.args.pop(); |                 if (distance >= 0 && distance <= 99) $.args.pop(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue