- 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:
bignutty 2024-07-17 21:36:21 +02:00
parent 07ceaac9d9
commit bb78a514cc
10 changed files with 131 additions and 27 deletions

View file

@ -1,6 +1,7 @@
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");
@ -45,9 +46,9 @@ module.exports = {
pages,
buttons: [{
customId: "next",
emoji: "<:images:1063477061156605982>",
label: "Toggle Server/Profile",
style: 1
emoji: icon("button_user_profile_swap"),
label: "Toggle Server/Global Avatar",
style: 2
}]
});
} else {

View 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'
}
}))
}
},
};

View file

@ -1,6 +1,7 @@
const { paginator } = require("#client");
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 { editOrReply } = require("#utils/message");
const { getUser, renderBadges } = require("#utils/users");
@ -45,6 +46,8 @@ module.exports = {
if(u.discriminator && u.discriminator !== "0") usernameDisplay += `#${u.discriminator}`
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)}`
let userCard = createEmbed("default", context, {
@ -85,7 +88,33 @@ module.exports = {
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){
console.log(e)
}

View file

@ -99,7 +99,7 @@ function createSearchResultPage(context, entry){
module.exports = {
name: 'bing',
label: 'query',
aliases: ['b', 'search2'],
aliases: ['search2'],
metadata: {
description: 'Returns search results from Microsoft Bing.',
description_short: 'Search on Bing',

View file

@ -12,12 +12,12 @@ const { Permissions } = require("detritus-client/lib/constants");
function renderFooter(context, doodle){
if(doodle.label) return {
iconUrl: doodle.super_g,
text: `${doodle.label} • Google`
text: `${doodle.label} • Google Search`
}
return {
iconUrl: STATICS.google,
text: `Google ${context.application.name}`
text: `Google Search ${context.application.name}`
}
}

View file

@ -108,7 +108,7 @@ module.exports = {
pages,
buttons: [{
customId: "next",
emoji: "<:ico_button_thermometer:1262512806633144382>",
emoji: icon("button_thermometer"),
label: `Toggle ${unitNames[units[0]]}/${unitNames[units[1]]}`,
style: 2
}]