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