mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-10 07:03:08 -04:00
h
This commit is contained in:
parent
726861294b
commit
aec828beb5
14 changed files with 421 additions and 25 deletions
|
@ -4,30 +4,41 @@ const attachmentTypes = Object.freeze({
|
|||
image: ["image/png", "image/jpeg", "image/gif"]
|
||||
})
|
||||
|
||||
async function getRecentMedia(context, limit){
|
||||
async function getRecentMedia(context, limit) {
|
||||
if (!context.message.channel) {
|
||||
return undefined;
|
||||
} else if (context.message.attachments.length > 0) {
|
||||
return context.message.attachments.first();
|
||||
}
|
||||
const messages = await context.message.channel.fetchMessages({
|
||||
limit
|
||||
});
|
||||
|
||||
let messages = [];
|
||||
|
||||
// Handle Replies
|
||||
if (context.message.messageReference) {
|
||||
messages = [[context.message.messageReference.messageId, await context.message.channel.fetchMessage(context.message.messageReference.messageId)]] // somewhat hacky but it works lol
|
||||
} else {
|
||||
messages = await context.message.channel.fetchMessages({
|
||||
limit: limit,
|
||||
before: context.message.id
|
||||
})
|
||||
}
|
||||
|
||||
if (!messages) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
let attachments = [];
|
||||
for(const m of messages){
|
||||
for (const m of messages) {
|
||||
let message = m[1]
|
||||
if ( // First the attachment on the message
|
||||
message.attachments.first()
|
||||
) { attachments.push(message.attachments.first())
|
||||
) {
|
||||
attachments.push(message.attachments.first())
|
||||
} else if ( // Then the embed image
|
||||
message.embeds.length > 0 &&
|
||||
message.embeds.toArray()[0].image
|
||||
) { attachments.push(message.embeds.toArray()[0].image)
|
||||
) {
|
||||
attachments.push(message.embeds.toArray()[0].image)
|
||||
} else if (
|
||||
message.embeds.length > 0 &&
|
||||
message.embeds.toArray()[0].thumbnail
|
||||
|
@ -38,14 +49,14 @@ async function getRecentMedia(context, limit){
|
|||
|
||||
// simple helpers
|
||||
|
||||
async function getRecentImage(context, limit){
|
||||
async function getRecentImage(context, limit) {
|
||||
let attachments = await getRecentMedia(context, limit)
|
||||
let at;
|
||||
let validImages = attachmentTypes.image
|
||||
for(const a of attachments){
|
||||
if(a.contentType && validImages.includes(a.contentType) && at === undefined){ // discord attachment
|
||||
for (const a of attachments) {
|
||||
if (a.contentType && validImages.includes(a.contentType) && at === undefined) { // discord attachment
|
||||
at = a.url
|
||||
} else if (!a.content_type && at === undefined){ // other form of media
|
||||
} else if (!a.content_type && at === undefined) { // other form of media
|
||||
at = a.url
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,4 +16,8 @@ module.exports.codeblock = function(type, content){
|
|||
module.exports.link = function(url, masked){
|
||||
if(masked) return `[${masked}](${url})`
|
||||
return url
|
||||
}
|
||||
|
||||
module.exports.timestamp = function(time, flag = "t"){
|
||||
return `<${flag}:${Math.floor(time/1000)}>`
|
||||
}
|
|
@ -1,28 +1,65 @@
|
|||
async function getUser(context, query){
|
||||
let user;
|
||||
if(/[0-9]{18}/.test(query)){ // User ID supplied, use that
|
||||
let member;
|
||||
if(/[0-9]{18}/.test(query)){
|
||||
let uid = query.match(/[0-9]{18}/)
|
||||
try{
|
||||
user = await context.client.rest.fetchUser(uid)
|
||||
if(context.guild) member = await getMember(context, user.id)
|
||||
} catch(e){
|
||||
user = undefined
|
||||
}
|
||||
} else {
|
||||
user = await getMember(context, query)
|
||||
if(user) user = user.user
|
||||
member = await getMember(context, query)
|
||||
if(member) user = await context.client.rest.fetchUser(member.user.id)
|
||||
}
|
||||
return user;
|
||||
return {user: user, member: member};
|
||||
}
|
||||
|
||||
async function getMember(context, query){
|
||||
if(!context.guild) return;
|
||||
let members = await context.guild.fetchMembersSearch({ query })
|
||||
console.log(members)
|
||||
if(members) return members.first()
|
||||
return;
|
||||
if(/[0-9]{18}/.test(query)){
|
||||
let uid = query.match(/[0-9]{18}/)
|
||||
try{
|
||||
member = await context.guild.fetchMember(uid)
|
||||
return member;
|
||||
} catch(e){
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
let members = await context.guild.fetchMembersSearch({ query })
|
||||
if(members) return members.first()
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const { Constants } = require('detritus-client')
|
||||
const { UserFlags } = Constants
|
||||
|
||||
const BADGES = Object.freeze({
|
||||
[UserFlags.STAFF]: '<:badge_staff:903276633161609246>',
|
||||
[UserFlags.PARTNER]: '<:badge_partner:903276631559389196',
|
||||
[UserFlags.DISCORD_CERTIFIED_MODERATOR]: '<:badge_mod:903276631198695467>',
|
||||
[UserFlags.HYPESQUAD]: '<:badge_hypesquad:903276631408394351>',
|
||||
[UserFlags.HYPESQUAD_ONLINE_HOUSE_1]: '<:badge_hypesquad_bravery:903276631790059540>',
|
||||
[UserFlags.HYPESQUAD_ONLINE_HOUSE_2]: '<:badge_hypesquad_brilliance:903276631261597706>',
|
||||
[UserFlags.HYPESQUAD_ONLINE_HOUSE_3]: '<:badge_hypesquad_balance:903276631211249674>',
|
||||
[UserFlags.BUG_HUNTER_LEVEL_1]: '<:badge_bughunter:903276631173509131>',
|
||||
[UserFlags.BUG_HUNTER_LEVEL_2]: '<:badge_bughunter_2:903276883523797033>',
|
||||
[UserFlags.VERIFIED_DEVELOPER]: '<:badge_botdev:903276631173509130>',
|
||||
[UserFlags.PREMIUM_EARLY_SUPPORTER]: '<:badge_earlysupporter:903277590956101672>'
|
||||
})
|
||||
|
||||
function renderBadges(user){
|
||||
let badges = [];
|
||||
for(const flag of Object.keys(BADGES)){
|
||||
if(user.hasFlag(parseInt(flag))) badges.push(BADGES[flag])
|
||||
}
|
||||
return badges;
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getUser,
|
||||
getMember
|
||||
getMember,
|
||||
renderBadges
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue