mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-09 14:43:05 -04:00
- adds lc.banner
- adds server/global toggle for lc.u - update special button icons to use icon() system - fix hypesquad badge in lc.u - Google -> Google Search
This commit is contained in:
parent
07ceaac9d9
commit
bb78a514cc
10 changed files with 131 additions and 27 deletions
|
@ -134,7 +134,7 @@ module.exports = {
|
||||||
pages,
|
pages,
|
||||||
buttons: [{
|
buttons: [{
|
||||||
customId: "next",
|
customId: "next",
|
||||||
emoji: "<:ico_button_thermometer:1262512806633144382>",
|
emoji: icon("button_thermometer"),
|
||||||
label: `Toggle ${unitNames[units[0]]}/${unitNames[units[1]]}`,
|
label: `Toggle ${unitNames[units[0]]}/${unitNames[units[1]]}`,
|
||||||
style: 2
|
style: 2
|
||||||
}]
|
}]
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
const { paginator } = require('#client');
|
const { paginator } = require('#client');
|
||||||
|
|
||||||
const { createEmbed, page } = require("#utils/embed");
|
const { createEmbed, page } = require("#utils/embed");
|
||||||
|
const { icon } = require('#utils/markdown');
|
||||||
const { editOrReply } = require("#utils/message");
|
const { editOrReply } = require("#utils/message");
|
||||||
const { getUser } = require("#utils/users");
|
const { getUser } = require("#utils/users");
|
||||||
|
|
||||||
|
@ -45,9 +46,9 @@ module.exports = {
|
||||||
pages,
|
pages,
|
||||||
buttons: [{
|
buttons: [{
|
||||||
customId: "next",
|
customId: "next",
|
||||||
emoji: "<:images:1063477061156605982>",
|
emoji: icon("button_user_profile_swap"),
|
||||||
label: "Toggle Server/Profile",
|
label: "Toggle Server/Global Avatar",
|
||||||
style: 1
|
style: 2
|
||||||
}]
|
}]
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
67
commands/message/info/banner.js
Normal file
67
commands/message/info/banner.js
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
const { paginator } = require('#client');
|
||||||
|
|
||||||
|
const { createEmbed, page } = require("#utils/embed");
|
||||||
|
const { icon } = require('#utils/markdown');
|
||||||
|
const { editOrReply } = require("#utils/message");
|
||||||
|
const { getUser } = require("#utils/users");
|
||||||
|
|
||||||
|
// TODO: Turn this into a general purpose permissions constant
|
||||||
|
const { Permissions } = require("detritus-client/lib/constants");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'banner',
|
||||||
|
label: 'user',
|
||||||
|
aliases: ['b'],
|
||||||
|
metadata: {
|
||||||
|
description: 'Displays someones profile banner. Accepts IDs, Mentions, or Usernames.',
|
||||||
|
description_short: 'Get discord user avatars',
|
||||||
|
examples: ['avatar labsCore'],
|
||||||
|
category: 'info',
|
||||||
|
usage: 'avatar [<user>]',
|
||||||
|
slashCommmand: 'banner'
|
||||||
|
},
|
||||||
|
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
|
||||||
|
run: async (context, args) => {
|
||||||
|
context.triggerTyping();
|
||||||
|
if(!args.user) args.user = context.userId;
|
||||||
|
let u = await getUser(context, args.user)
|
||||||
|
if(!u || !u.user) return editOrReply(context, createEmbed("warning", context, "No users found."))
|
||||||
|
|
||||||
|
if(!u.user.banner && !u.member?.banner) return editOrReply(context, createEmbed("warning", context, "User has no banners."))
|
||||||
|
|
||||||
|
let pages = []
|
||||||
|
|
||||||
|
if(!u.member?.banner && u.member) u.member = await context.guild.fetchMember(u.user.id)
|
||||||
|
|
||||||
|
if(u.member?.banner) {
|
||||||
|
pages.push(page(createEmbed("default", context, {
|
||||||
|
image: {
|
||||||
|
url: `https://cdn.discordapp.com/guilds/${context.guild.id}/users/${u.member.id}/banners/${u.member.banner}.png` + "?size=4096"
|
||||||
|
}
|
||||||
|
})))
|
||||||
|
|
||||||
|
pages.push(page(createEmbed("default", context, {
|
||||||
|
image: {
|
||||||
|
url: u.user.bannerUrl + '?size=4096'
|
||||||
|
}
|
||||||
|
})))
|
||||||
|
|
||||||
|
await paginator.createPaginator({
|
||||||
|
context,
|
||||||
|
pages,
|
||||||
|
buttons: [{
|
||||||
|
customId: "next",
|
||||||
|
emoji: icon("button_user_profile_swap"),
|
||||||
|
label: "Toggle Server/Global Banner",
|
||||||
|
style: 2
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return editOrReply(context, createEmbed("default", context, {
|
||||||
|
image: {
|
||||||
|
url: u.user.bannerUrl + '?size=4096'
|
||||||
|
}
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
|
@ -1,6 +1,7 @@
|
||||||
|
const { paginator } = require("#client");
|
||||||
const { BADGE_ICONS } = require("#constants");
|
const { BADGE_ICONS } = require("#constants");
|
||||||
|
|
||||||
const { createEmbed } = require("#utils/embed");
|
const { createEmbed, page } = require("#utils/embed");
|
||||||
const { icon, highlight, timestamp, smallIconPill, smallPill } = require("#utils/markdown");
|
const { icon, highlight, timestamp, smallIconPill, smallPill } = require("#utils/markdown");
|
||||||
const { editOrReply } = require("#utils/message");
|
const { editOrReply } = require("#utils/message");
|
||||||
const { getUser, renderBadges } = require("#utils/users");
|
const { getUser, renderBadges } = require("#utils/users");
|
||||||
|
@ -45,6 +46,8 @@ module.exports = {
|
||||||
if(u.discriminator && u.discriminator !== "0") usernameDisplay += `#${u.discriminator}`
|
if(u.discriminator && u.discriminator !== "0") usernameDisplay += `#${u.discriminator}`
|
||||||
|
|
||||||
usernameDisplay = `**@${usernameDisplay}**${botTag} ${highlight(`(${u.id})`)}`
|
usernameDisplay = `**@${usernameDisplay}**${botTag} ${highlight(`(${u.id})`)}`
|
||||||
|
|
||||||
|
if(u.globalName !== null) usernameDisplay += `\n${smallIconPill("user_card", "Display Name")} ${smallPill(u.globalName)}`
|
||||||
if(m && m.nick !== null) usernameDisplay += `\n${smallIconPill("user_card", "Nickname")} ${smallPill(m.nick)}`
|
if(m && m.nick !== null) usernameDisplay += `\n${smallIconPill("user_card", "Nickname")} ${smallPill(m.nick)}`
|
||||||
|
|
||||||
let userCard = createEmbed("default", context, {
|
let userCard = createEmbed("default", context, {
|
||||||
|
@ -85,7 +88,33 @@ module.exports = {
|
||||||
inline: true
|
inline: true
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return editOrReply(context, userCard)
|
|
||||||
|
|
||||||
|
if(!u.member?.banner && u.member) u.member = await context.guild.fetchMember(u.user.id)
|
||||||
|
|
||||||
|
// No special handling
|
||||||
|
if(m == undefined || m.avatar === null && m.banner === null) return editOrReply(context, userCard)
|
||||||
|
|
||||||
|
let pages = [];
|
||||||
|
|
||||||
|
let memberCard = structuredClone(userCard);
|
||||||
|
if(m?.avatar !== null) memberCard.thumbnail.url = m.avatarUrl + "?size=4096";
|
||||||
|
if(m?.banner !== null) memberCard.image.url = `https://cdn.discordapp.com/guilds/${context.guild.id}/users/${m.id}/banners/${m.banner}.png` + "?size=4096";
|
||||||
|
|
||||||
|
// Show the server-specific card first if available
|
||||||
|
pages.push(page(memberCard))
|
||||||
|
pages.push(page(userCard))
|
||||||
|
|
||||||
|
await paginator.createPaginator({
|
||||||
|
context,
|
||||||
|
pages,
|
||||||
|
buttons: [{
|
||||||
|
customId: "next",
|
||||||
|
emoji: icon("button_user_profile_swap"),
|
||||||
|
label: "Toggle Server/Global Profile",
|
||||||
|
style: 2
|
||||||
|
}]
|
||||||
|
});
|
||||||
}catch(e){
|
}catch(e){
|
||||||
console.log(e)
|
console.log(e)
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ function createSearchResultPage(context, entry){
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: 'bing',
|
name: 'bing',
|
||||||
label: 'query',
|
label: 'query',
|
||||||
aliases: ['b', 'search2'],
|
aliases: ['search2'],
|
||||||
metadata: {
|
metadata: {
|
||||||
description: 'Returns search results from Microsoft Bing.',
|
description: 'Returns search results from Microsoft Bing.',
|
||||||
description_short: 'Search on Bing',
|
description_short: 'Search on Bing',
|
||||||
|
|
|
@ -12,12 +12,12 @@ const { Permissions } = require("detritus-client/lib/constants");
|
||||||
function renderFooter(context, doodle){
|
function renderFooter(context, doodle){
|
||||||
if(doodle.label) return {
|
if(doodle.label) return {
|
||||||
iconUrl: doodle.super_g,
|
iconUrl: doodle.super_g,
|
||||||
text: `${doodle.label} • Google`
|
text: `${doodle.label} • Google Search`
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
iconUrl: STATICS.google,
|
iconUrl: STATICS.google,
|
||||||
text: `Google • ${context.application.name}`
|
text: `Google Search • ${context.application.name}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -108,7 +108,7 @@ module.exports = {
|
||||||
pages,
|
pages,
|
||||||
buttons: [{
|
buttons: [{
|
||||||
customId: "next",
|
customId: "next",
|
||||||
emoji: "<:ico_button_thermometer:1262512806633144382>",
|
emoji: icon("button_thermometer"),
|
||||||
label: `Toggle ${unitNames[units[0]]}/${unitNames[units[1]]}`,
|
label: `Toggle ${unitNames[units[0]]}/${unitNames[units[1]]}`,
|
||||||
style: 2
|
style: 2
|
||||||
}]
|
}]
|
||||||
|
|
|
@ -58,7 +58,13 @@ module.exports.ICONS = Object.freeze({
|
||||||
"brand": "<:ico_brand:1237843729880977459>",
|
"brand": "<:ico_brand:1237843729880977459>",
|
||||||
|
|
||||||
"flask_mini": "<:ico_flask_mini:1260342544600928286>",
|
"flask_mini": "<:ico_flask_mini:1260342544600928286>",
|
||||||
"subtext_lightbulb": "<:ico_subt_lightbulb:1262470784224591934>",
|
"subtext_lightbulb": "<:ico_subt_lightbulb:1263199767140237342>",
|
||||||
|
|
||||||
|
"button_thermometer": "<:ico_button_thermometer:1262512806633144382>",
|
||||||
|
"button_user_profile_swap": "<:ico_button_user_profile_swap:1263198564528685188>",
|
||||||
|
|
||||||
|
"button_chevron_left": "<:button_chevron_left:1263214273640009749>",
|
||||||
|
"button_chevron_right": "<:button_chevron_right:1263214275829436507>",
|
||||||
|
|
||||||
"home": "<:ico_home:1165257185488551976>",
|
"home": "<:ico_home:1165257185488551976>",
|
||||||
"image": "<:ico_image:1165257188235825274>",
|
"image": "<:ico_image:1165257188235825274>",
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
const { icon } = require("#utils/markdown");
|
||||||
const InteractionPaginator = require("./InteractionPaginator");
|
const InteractionPaginator = require("./InteractionPaginator");
|
||||||
const assert = require("assert");
|
const assert = require("assert");
|
||||||
|
|
||||||
|
@ -10,8 +11,8 @@ const allowedEvents = new Set([
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const ButtonEmoji = Object.freeze({
|
const ButtonEmoji = Object.freeze({
|
||||||
NEXT: '<:right:977871577758707782>',
|
NEXT: icon("button_chevron_right"),
|
||||||
PREVIOUS: '<:left:977871577532211200>',
|
PREVIOUS: icon("button_chevron_left"),
|
||||||
STOP: '<:ico_trash:929498022386221096>',
|
STOP: '<:ico_trash:929498022386221096>',
|
||||||
SEARCH: '<:search:1063080546365866056>',
|
SEARCH: '<:search:1063080546365866056>',
|
||||||
UNKNOWN: '<:ico_question:949420315677691934>'
|
UNKNOWN: '<:ico_question:949420315677691934>'
|
||||||
|
|
|
@ -60,7 +60,7 @@ const BADGE_TYPES = Object.freeze({
|
||||||
"hypesquad": {
|
"hypesquad": {
|
||||||
description: "HypeSquad Events",
|
description: "HypeSquad Events",
|
||||||
link: "https://discord.com/hypesquad",
|
link: "https://discord.com/hypesquad",
|
||||||
icon: BADGE_ICONS.hypesquad
|
icon: BADGE_ICONS.hypesquad_events
|
||||||
},
|
},
|
||||||
"hypesquad_house_1": {
|
"hypesquad_house_1": {
|
||||||
description: "HypeSquad Bravery",
|
description: "HypeSquad Bravery",
|
||||||
|
@ -105,23 +105,23 @@ const BADGE_TYPES = Object.freeze({
|
||||||
})
|
})
|
||||||
|
|
||||||
const BADGES = Object.freeze({
|
const BADGES = Object.freeze({
|
||||||
[UserFlags.STAFF]: 'staff',
|
"staff": UserFlags.STAFF,
|
||||||
[UserFlags.PARTNER]: 'partner',
|
"partner": UserFlags.PARTNER,
|
||||||
[UserFlags.DISCORD_CERTIFIED_MODERATOR]: 'certified_moderator',
|
"certified_moderator": UserFlags.DISCORD_CERTIFIED_MODERATOR,
|
||||||
[UserFlags.HYPESQUAD]: 'hypesquad',
|
"hypesquad": UserFlags.HYPESQUAD,
|
||||||
[UserFlags.HYPESQUAD_ONLINE_HOUSE_1]: 'hypesquad_house_1',
|
"hypesquad_house_1": UserFlags.HYPESQUAD_ONLINE_HOUSE_1,
|
||||||
[UserFlags.HYPESQUAD_ONLINE_HOUSE_2]: 'hypesquad_house_2',
|
"hypesquad_house_2": UserFlags.HYPESQUAD_ONLINE_HOUSE_2,
|
||||||
[UserFlags.HYPESQUAD_ONLINE_HOUSE_3]: 'hypesquad_house_3',
|
"hypesquad_house_3": UserFlags.HYPESQUAD_ONLINE_HOUSE_3,
|
||||||
[UserFlags.BUG_HUNTER_LEVEL_1]: 'bug_hunter_level_1',
|
"bug_hunter_level_1": UserFlags.BUG_HUNTER_LEVEL_1,
|
||||||
[UserFlags.BUG_HUNTER_LEVEL_2]: 'bug_hunter_level_2',
|
"bug_hunter_level_2": UserFlags.BUG_HUNTER_LEVEL_2,
|
||||||
[1<<22]: 'active_developer',
|
"active_developer": UserFlags.ACTIVE_DEVELOPER,
|
||||||
[UserFlags.VERIFIED_DEVELOPER]: 'verified_developer',
|
"verified_developer": UserFlags.VERIFIED_DEVELOPER,
|
||||||
[UserFlags.PREMIUM_EARLY_SUPPORTER]: 'early_supporter',
|
"early_supporter": UserFlags.PREMIUM_EARLY_SUPPORTER
|
||||||
})
|
})
|
||||||
|
|
||||||
function renderBadges(user){
|
function renderBadges(user){
|
||||||
let badges = [];
|
let badges = [];
|
||||||
for(const flag of Object.keys(BADGES)) if(user.hasFlag(parseInt(flag))) badges.push(BADGE_TYPES[BADGES[flag]].icon)
|
for(const flag of Object.keys(BADGES)) if(user.hasFlag(BADGES[flag])) badges.push(BADGE_TYPES[flag].icon)
|
||||||
return badges;
|
return badges;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue