mirror of
				https://github.com/keanuplayz/TravBot-v3.git
				synced 2024-08-15 02:33:12 +00:00 
			
		
		
		
	Fixed up info guild.
This commit is contained in:
		
							parent
							
								
									dbebb656b6
								
							
						
					
					
						commit
						cdf2c47f0c
					
				
					 1 changed files with 206 additions and 197 deletions
				
			
		|  | @ -1,197 +1,206 @@ | ||||||
| import { Guild, MessageEmbed } from 'discord.js'; | import { Guild, MessageEmbed } from 'discord.js'; | ||||||
| import moment from 'moment'; | import moment from 'moment'; | ||||||
| import Command from '../core/command'; | import Command from '../core/command'; | ||||||
| import { CommonLibrary } from '../core/lib'; | import { CommonLibrary } from '../core/lib'; | ||||||
| import { verificationLevels, filterLevels, regions, flags } from '../defs/info'; | import { verificationLevels, filterLevels, regions, flags } from '../defs/info'; | ||||||
| 
 | 
 | ||||||
| export default new Command({ | function trimArray(arr: any, maxLen = 10) { | ||||||
|   description: |   if (arr.length > maxLen) { | ||||||
|     'Command to provide all sorts of info about the current server, a user, etc.', |     const len = arr.length - maxLen; | ||||||
|   run: 'Please provide an argument.\nFor help, run `%prefix%help info`.', |     arr = arr.slice(0, maxLen); | ||||||
|   subcommands: { |     arr.push(`${len} more...`); | ||||||
|     avatar: new Command({ |   } | ||||||
|       description: "Shows your own, or another user's avatar.", |   return arr; | ||||||
|       usage: '(<user>)', | } | ||||||
|       async run($: CommonLibrary): Promise<any> { | 
 | ||||||
|         $.channel.send( | export default new Command({ | ||||||
|           $.author.displayAvatarURL({ dynamic: true, size: 2048 }), |   description: | ||||||
|         ); |     'Command to provide all sorts of info about the current server, a user, etc.', | ||||||
|       }, |   run: 'Please provide an argument.\nFor help, run `%prefix%help info`.', | ||||||
|       user: new Command({ |   subcommands: { | ||||||
|         description: "Shows your own, or another user's avatar.", |     avatar: new Command({ | ||||||
|         async run($: CommonLibrary): Promise<any> { |       description: "Shows your own, or another user's avatar.", | ||||||
|           $.channel.send( |       usage: '(<user>)', | ||||||
|             $.args[0].displayAvatarURL({ dynamic: true, size: 2048 }), |       async run($: CommonLibrary): Promise<any> { | ||||||
|           ); |         $.channel.send( | ||||||
|         }, |           $.author.displayAvatarURL({ dynamic: true, size: 2048 }), | ||||||
|       }), |         ); | ||||||
|     }), |       }, | ||||||
| 
 |       user: new Command({ | ||||||
|     guild: new Command({ |         description: "Shows your own, or another user's avatar.", | ||||||
|       description: 'Displays info about the current guild.', |         async run($: CommonLibrary): Promise<any> { | ||||||
|       async run($: CommonLibrary): Promise<any> { |           $.channel.send( | ||||||
|         if ($.guild) { |             $.args[0].displayAvatarURL({ dynamic: true, size: 2048 }), | ||||||
|           const roles = $.guild.roles.cache |           ); | ||||||
|             .sort((a, b) => b.position - a.position) |         }, | ||||||
|             .map((role) => role.toString()); |       }), | ||||||
|           const members = $.guild.members.cache; |     }), | ||||||
|           const channels = $.guild.channels.cache; | 
 | ||||||
|           const emojis = $.guild.emojis.cache; |     guild: new Command({ | ||||||
| 
 |       description: 'Displays info about the current guild.', | ||||||
|           const iconURL = $.guild.iconURL({ dynamic: true }); |       async run($: CommonLibrary): Promise<any> { | ||||||
|           const embed = new MessageEmbed() |         if ($.guild) { | ||||||
|             .setDescription(`**Guild information for __${$.guild.name}__**`) |           const roles = $.guild.roles.cache | ||||||
|             .setColor('BLUE'); |             .sort((a, b) => b.position - a.position) | ||||||
|           if (iconURL) |             .map((role) => role.toString()); | ||||||
|             embed |           const members = $.guild.members.cache; | ||||||
|               .setThumbnail(iconURL) |           const channels = $.guild.channels.cache; | ||||||
|               .addField('General', [ |           const emojis = $.guild.emojis.cache; | ||||||
|                 `**❯ Name:** ${$.guild.name}`, | 
 | ||||||
|                 `**❯ ID:** ${$.guild.id}`, |           const iconURL = $.guild.iconURL({ dynamic: true }); | ||||||
|                 `**❯ Owner:** ${$.guild.owner?.user.tag} (${$.guild.ownerID})`, |           const embed = new MessageEmbed() | ||||||
|                 `**❯ Region:** ${regions[$.guild.region]}`, |             .setDescription(`**Guild information for __${$.guild.name}__**`) | ||||||
|                 `**❯ Boost Tier:** ${ |             .setColor('BLUE'); | ||||||
|                   $.guild.premiumTier ? `Tier ${$.guild.premiumTier}` : 'None' |           if (iconURL) | ||||||
|                 }`,
 |             embed | ||||||
|                 `**❯ Explicit Filter:** ${ |               .setThumbnail(iconURL) | ||||||
|                   filterLevels[$.guild.explicitContentFilter] |               .addField('General', [ | ||||||
|                 }`,
 |                 `**❯ Name:** ${$.guild.name}`, | ||||||
|                 `**❯ Verification Level:** ${ |                 `**❯ ID:** ${$.guild.id}`, | ||||||
|                   verificationLevels[$.guild.verificationLevel] |                 `**❯ Owner:** ${$.guild.owner?.user.tag} (${$.guild.ownerID})`, | ||||||
|                 }`,
 |                 `**❯ Region:** ${regions[$.guild.region]}`, | ||||||
|                 `**❯ Time Created:** ${moment($.guild.createdTimestamp).format( |                 `**❯ Boost Tier:** ${ | ||||||
|                   'LT', |                   $.guild.premiumTier ? `Tier ${$.guild.premiumTier}` : 'None' | ||||||
|                 )} ${moment($.guild.createdTimestamp).format('LL')} ${moment( |                 }`,
 | ||||||
|                   $.guild.createdTimestamp, |                 `**❯ Explicit Filter:** ${ | ||||||
|                 ).fromNow()})`,
 |                   filterLevels[$.guild.explicitContentFilter] | ||||||
|                 '\u200b', |                 }`,
 | ||||||
|               ]) |                 `**❯ Verification Level:** ${ | ||||||
|               .addField('Statistics', [ |                   verificationLevels[$.guild.verificationLevel] | ||||||
|                 `**❯ Role Count:** ${roles.length}`, |                 }`,
 | ||||||
|                 `**❯ Emoji Count:** ${emojis.size}`, |                 `**❯ Time Created:** ${moment($.guild.createdTimestamp).format( | ||||||
|                 `**❯ Regular Emoji Count:** ${ |                   'LT', | ||||||
|                   emojis.filter((emoji) => !emoji.animated).size |                 )} ${moment($.guild.createdTimestamp).format('LL')} ${moment( | ||||||
|                 }`,
 |                   $.guild.createdTimestamp, | ||||||
|                 `**❯ Animated Emoji Count:** ${ |                 ).fromNow()})`,
 | ||||||
|                   emojis.filter((emoji) => emoji.animated).size |                 '\u200b', | ||||||
|                 }`,
 |               ]) | ||||||
|                 `**❯ Member Count:** ${$.guild.memberCount}`, |               .addField('Statistics', [ | ||||||
|                 `**❯ Humans:** ${ |                 `**❯ Role Count:** ${roles.length}`, | ||||||
|                   members.filter((member) => !member.user.bot).size |                 `**❯ Emoji Count:** ${emojis.size}`, | ||||||
|                 }`,
 |                 `**❯ Regular Emoji Count:** ${ | ||||||
|                 `**❯ Bots:** ${ |                   emojis.filter((emoji) => !emoji.animated).size | ||||||
|                   members.filter((member) => member.user.bot).size |                 }`,
 | ||||||
|                 }`,
 |                 `**❯ Animated Emoji Count:** ${ | ||||||
|                 `**❯ Text Channels:** ${ |                   emojis.filter((emoji) => emoji.animated).size | ||||||
|                   channels.filter((channel) => channel.type === 'text').size |                 }`,
 | ||||||
|                 }`,
 |                 `**❯ Member Count:** ${$.guild.memberCount}`, | ||||||
|                 `**❯ Voice Channels:** ${ |                 `**❯ Humans:** ${ | ||||||
|                   channels.filter((channel) => channel.type === 'voice').size |                   members.filter((member) => !member.user.bot).size | ||||||
|                 }`,
 |                 }`,
 | ||||||
|                 `**❯ Boost Count:** ${$.guild.premiumSubscriptionCount || '0'}`, |                 `**❯ Bots:** ${ | ||||||
|                 `\u200b`, |                   members.filter((member) => member.user.bot).size | ||||||
|               ]) |                 }`,
 | ||||||
|               .addField('Presence', [ |                 `**❯ Text Channels:** ${ | ||||||
|                 `**❯ Online:** ${ |                   channels.filter((channel) => channel.type === 'text').size | ||||||
|                   members.filter( |                 }`,
 | ||||||
|                     (member) => member.presence.status === 'online', |                 `**❯ Voice Channels:** ${ | ||||||
|                   ).size |                   channels.filter((channel) => channel.type === 'voice').size | ||||||
|                 }`,
 |                 }`,
 | ||||||
|                 `**❯ Idle:** ${ |                 `**❯ Boost Count:** ${$.guild.premiumSubscriptionCount || '0'}`, | ||||||
|                   members.filter((member) => member.presence.status === 'idle') |                 `\u200b`, | ||||||
|                     .size |               ]) | ||||||
|                 }`,
 |               .addField('Presence', [ | ||||||
|                 `**❯ Do Not Disturb:** ${ |                 `**❯ Online:** ${ | ||||||
|                   members.filter((member) => member.presence.status === 'dnd') |                   members.filter( | ||||||
|                     .size |                     (member) => member.presence.status === 'online', | ||||||
|                 }`,
 |                   ).size | ||||||
|                 `**❯ Offline:** ${ |                 }`,
 | ||||||
|                   members.filter( |                 `**❯ Idle:** ${ | ||||||
|                     (member) => member.presence.status === 'offline', |                   members.filter((member) => member.presence.status === 'idle') | ||||||
|                   ).size |                     .size | ||||||
|                 }`,
 |                 }`,
 | ||||||
|                 '\u200b', |                 `**❯ Do Not Disturb:** ${ | ||||||
|               ]) |                   members.filter((member) => member.presence.status === 'dnd') | ||||||
|               .addField( |                     .size | ||||||
|                 `Roles [${roles.length - 1}]`, |                 }`,
 | ||||||
|                 roles.length < 10 |                 `**❯ Offline:** ${ | ||||||
|                   ? roles.join(', ') |                   members.filter( | ||||||
|                   : roles.length > 10 |                     (member) => member.presence.status === 'offline', | ||||||
|                   ? this.client.utils.trimArray(roles) |                   ).size | ||||||
|                   : 'None', |                 }`,
 | ||||||
|               ) |                 '\u200b', | ||||||
|               .setTimestamp(); |               ]) | ||||||
| 
 |               .addField( | ||||||
|           $.channel.send(embed); |                 `Roles [${roles.length - 1}]`, | ||||||
|         } else { |                 roles.length < 10 | ||||||
|           $.channel.send('Please execute this command in a guild.'); |                   ? roles.join(', ') | ||||||
|         } |                   : roles.length > 10 | ||||||
|       }, |                   ? trimArray(roles) | ||||||
|     }), |                   : 'None', | ||||||
|   }, |               ) | ||||||
|   user: new Command({ |               .setTimestamp(); | ||||||
|     description: 'Displays info about mentioned user.', | 
 | ||||||
|     async run($: CommonLibrary): Promise<any> { |           $.channel.send(embed); | ||||||
|       // Transforms the User object into a GuildMember object of the current guild.
 |         } else { | ||||||
|       const member = $.guild?.members.resolve($.args[0]); |           $.channel.send('Please execute this command in a guild.'); | ||||||
| 
 |         } | ||||||
|       if (!member) |       }, | ||||||
|         return $.channel.send( |     }), | ||||||
|           'No member object was found by that user! Are you sure you used this command in a server?', |   }, | ||||||
|         ); |   user: new Command({ | ||||||
| 
 |     description: 'Displays info about mentioned user.', | ||||||
|       const roles = member.roles.cache |     async run($: CommonLibrary): Promise<any> { | ||||||
|         .sort( |       // Transforms the User object into a GuildMember object of the current guild.
 | ||||||
|           (a: { position: number }, b: { position: number }) => |       const member = $.guild?.members.resolve($.args[0]); | ||||||
|             b.position - a.position, | 
 | ||||||
|         ) |       if (!member) | ||||||
|         .map((role: { toString: () => any }) => role.toString()) |         return $.channel.send( | ||||||
|         .slice(0, -1); |           'No member object was found by that user! Are you sure you used this command in a server?', | ||||||
|       // @ts-ignore - Discord.js' typings seem to be outdated here. According to their v12 docs, it's User.fetchFlags() instead of User.flags.
 |         ); | ||||||
|       const userFlags = ((await member.user.fetchFlags()) as UserFlags).toArray(); | 
 | ||||||
| 
 |       const roles = member.roles.cache | ||||||
|       const embed = new MessageEmbed() |         .sort( | ||||||
|         .setThumbnail( |           (a: { position: number }, b: { position: number }) => | ||||||
|           member.user.displayAvatarURL({ dynamic: true, size: 512 }), |             b.position - a.position, | ||||||
|         ) |         ) | ||||||
|         .setColor(member.displayHexColor || 'BLUE') |         .map((role: { toString: () => any }) => role.toString()) | ||||||
|         .addField('User', [ |         .slice(0, -1); | ||||||
|           `**❯ Username:** ${member.user.username}`, |       // @ts-ignore - Discord.js' typings seem to be outdated here. According to their v12 docs, it's User.fetchFlags() instead of User.flags.
 | ||||||
|           `**❯ Discriminator:** ${member.user.discriminator}`, |       const userFlags = ((await member.user.fetchFlags()) as UserFlags).toArray(); | ||||||
|           `**❯ ID:** ${member.id}`, | 
 | ||||||
|           `**❯ Flags:** ${userFlags.length ? userFlags.join(', ') : 'None'}`, |       const embed = new MessageEmbed() | ||||||
|           `**❯ Avatar:** [Link to avatar](${member.user.displayAvatarURL({ |         .setThumbnail( | ||||||
|             dynamic: true, |           member.user.displayAvatarURL({ dynamic: true, size: 512 }), | ||||||
|           })})`,
 |         ) | ||||||
|           `**❯ Time Created:** ${moment(member.user.createdTimestamp).format( |         .setColor(member.displayHexColor || 'BLUE') | ||||||
|             'LT', |         .addField('User', [ | ||||||
|           )} ${moment(member.user.createdTimestamp).format('LL')} ${moment( |           `**❯ Username:** ${member.user.username}`, | ||||||
|             member.user.createdTimestamp, |           `**❯ Discriminator:** ${member.user.discriminator}`, | ||||||
|           ).fromNow()}`,
 |           `**❯ ID:** ${member.id}`, | ||||||
|           `**❯ Status:** ${member.user.presence.status}`, |           `**❯ Flags:** ${userFlags.length ? userFlags.join(', ') : 'None'}`, | ||||||
|           `**❯ Game:** ${ |           `**❯ Avatar:** [Link to avatar](${member.user.displayAvatarURL({ | ||||||
|             member.user.presence.activities || 'Not playing a game.' |             dynamic: true, | ||||||
|           }`,
 |           })})`,
 | ||||||
|         ]) |           `**❯ Time Created:** ${moment(member.user.createdTimestamp).format( | ||||||
|         .addField('Member', [ |             'LT', | ||||||
|           `**❯ Highest Role:** ${ |           )} ${moment(member.user.createdTimestamp).format('LL')} ${moment( | ||||||
|             member.roles.highest.id === $.guild?.id |             member.user.createdTimestamp, | ||||||
|               ? 'None' |           ).fromNow()}`,
 | ||||||
|               : member.roles.highest.name |           `**❯ Status:** ${member.user.presence.status}`, | ||||||
|           }`,
 |           `**❯ Game:** ${ | ||||||
|           `**❯ Server Join Date:** ${moment(member.joinedAt).format('LL LTS')}`, |             member.user.presence.activities || 'Not playing a game.' | ||||||
|           `**❯ Hoist Role:** ${ |           }`,
 | ||||||
|             member.roles.hoist ? member.roles.hoist.name : 'None' |         ]) | ||||||
|           }`,
 |         .addField('Member', [ | ||||||
|           `**❯ Roles:** [${roles.length}]: ${ |           `**❯ Highest Role:** ${ | ||||||
|             roles.length < 10 |             member.roles.highest.id === $.guild?.id | ||||||
|               ? roles.join(', ') |               ? 'None' | ||||||
|               : roles.length > 10 |               : member.roles.highest.name | ||||||
|               ? this.client.utils.trimArray(roles) |           }`,
 | ||||||
|               : 'None' |           `**❯ Server Join Date:** ${moment(member.joinedAt).format('LL LTS')}`, | ||||||
|           }`,
 |           `**❯ Hoist Role:** ${ | ||||||
|         ]); |             member.roles.hoist ? member.roles.hoist.name : 'None' | ||||||
|       $.channel.send(embed); |           }`,
 | ||||||
|     }, |           `**❯ Roles:** [${roles.length}]: ${ | ||||||
|   }), |             roles.length < 10 | ||||||
| }); |               ? roles.join(', ') | ||||||
|  |               : roles.length > 10 | ||||||
|  |               ? this.client.utils.trimArray(roles) | ||||||
|  |               : 'None' | ||||||
|  |           }`,
 | ||||||
|  |         ]); | ||||||
|  |       $.channel.send(embed); | ||||||
|  |     }, | ||||||
|  |   }), | ||||||
|  | }); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue