add method for check discord join and role
This commit is contained in:
parent
8c3a3593bf
commit
951122c1a7
64
src/services/discord.svr.ts
Normal file
64
src/services/discord.svr.ts
Normal 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
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user