add method for check discord join and role

This commit is contained in:
CounterFire2023 2024-03-29 16:09:59 +08:00
parent 8c3a3593bf
commit 951122c1a7

View File

@ -0,0 +1,64 @@
const DISCORD_API_HOST = 'https://discord.com/api/v10'
/**
* discord接口,
* :
* https://discord.com/developers/docs/resources/guild#guild-member-object
* //TODO: 须在.env中配置以下参数:
* DISCROD_GUILD_ID
* DISCORD_BOT_TOKEN
*/
export async function getGuildMember(uid: string) {
const url = `${DISCORD_API_HOST}/guilds/${process.env.DISCROD_GUILD_ID}/members/${uid}`
const token = process.env.DISCORD_BOT_TOKEN
const response = await fetch(url, {
headers: {
authorization: `Bot ${token}`,
},
})
const data = await response.json()
return data
}
/**
*
* @param uid
* @returns
*/
export async function checkJoinGuld(uid: string) {
try {
const res = await getGuildMember(uid)
/**
* if user not in guild, res will be:
* {
* "message": "Unknown User",
* "code": 10013
* }
*/
if (res.code === 10013) {
return false
}
return true
} catch (e) {
return false
}
}
/**
*
* @param uid
* @param roleId
* @returns
*/
export async function checkGotRole(uid: string, roleId: string) {
try {
const res = await getGuildMember(uid)
if (res.code === 10013) {
return false
}
if (res.roles.includes(roleId)) {
return true
}
return false
} catch (e) {
return false
}
}