mirror of
https://github.com/koreanbots/core.git
synced 2025-12-15 14:10:22 +00:00
feat: detect bots using http interactions (#515)
* feat: check if bot uses interactions over http * chore: remove optional chainings * fix: replace with falsy check * chore: remove unnecessary operator * fix: check flags properly
This commit is contained in:
parent
0dc1d99bda
commit
ad12c4d55d
@ -1,7 +1,7 @@
|
||||
import fetch from 'node-fetch'
|
||||
import { TLRU } from 'tlru'
|
||||
import DataLoader from 'dataloader'
|
||||
import { ActivityType, GuildFeature, GuildMember, User as DiscordUser } from 'discord.js'
|
||||
import { ActivityType, GuildFeature, GuildMember, User as DiscordUser, UserFlags } from 'discord.js'
|
||||
|
||||
import { Bot, Server, User, ListType, List, TokenRegister, BotFlags, DiscordUserFlags, SubmittedBot, DiscordTokenInfo, ServerData, ServerFlags, RawGuild, Nullable } from '@types'
|
||||
import { botCategories, DiscordEnpoints, imageSafeHost, serverCategories, SpecialEndPoints, VOTE_COOLDOWN } from './Constants'
|
||||
@ -49,17 +49,19 @@ async function getBot(id: string, topLevel=true):Promise<Bot> {
|
||||
const discordBot = await DiscordBot.users.fetch(res[0].id).then(r=> r).catch(() => null) as DiscordUser
|
||||
if(!discordBot) return null
|
||||
const botMember = await getMainGuild()?.members?.fetch(res[0].id).catch(e=> e) as GuildMember
|
||||
res[0].flags = res[0].flags | (discordBot.flags?.bitfield && DiscordUserFlags.VERIFIED_BOT ? BotFlags.verified : 0) | (res[0].trusted ? BotFlags.trusted : 0) | (res[0].partnered ? BotFlags.partnered : 0)
|
||||
res[0].flags = res[0].flags | (discordBot.flags?.bitfield & DiscordUserFlags.VERIFIED_BOT ? BotFlags.verified : 0) | (res[0].trusted ? BotFlags.trusted : 0) | (res[0].partnered ? BotFlags.partnered : 0)
|
||||
res[0].tag = discordBot.discriminator
|
||||
res[0].avatar = discordBot.avatar
|
||||
res[0].name = discordBot.username
|
||||
res[0].category = JSON.parse(res[0].category)
|
||||
res[0].owners = JSON.parse(res[0].owners)
|
||||
if(botMember) {
|
||||
if(botMember.presence === null) {
|
||||
if(discordBot.flags.has(UserFlags.BotHTTPInteractions)) {
|
||||
res[0].status = 'online'
|
||||
} else if(!botMember.presence) {
|
||||
res[0].status = 'offline'
|
||||
} else {
|
||||
res[0].status = botMember?.presence?.activities.find(r => r.type === ActivityType.Streaming) ? 'streaming' : botMember?.presence?.status || null
|
||||
res[0].status = botMember.presence.activities.some(r => r.type === ActivityType.Streaming) ? 'streaming' : botMember.presence.status
|
||||
}
|
||||
} else {
|
||||
res[0].status = null
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user