Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 1x 1x | import { Services } from "@/types/Constants";
import { Inject, Injectable } from "@nestjs/common";
import { AxiosResponse } from "axios";
import { PartialChannelData } from "discord.js";
import { GuildDTO } from "../guild/guild.dto";
import { DiscordHttpService } from "./discord-http.service";
import { IDiscordService } from "./interfaces/IDiscordService.interface";
@Injectable()
export class DiscordService implements IDiscordService {
public constructor(@Inject(Services.Discord_HTTP) private readonly DiscordHttp: DiscordHttpService) {}
public async getBotGuilds(): Promise<GuildDTO[]> {
return (await this.DiscordHttp.fetchBotGuilds()).data;
}
public async getUserGuilds(accessToken: string): Promise<GuildDTO[]> {
return (await this.DiscordHttp.fetchUserGuilds(accessToken)).data;
}
public async getMutualGuilds(accessToken: string): Promise<{
mutual: {
admin: GuildDTO[];
owner: GuildDTO[];
};
}> {
const bGuilds = await this.getBotGuilds();
const uGuilds = await this.getUserGuilds(accessToken);
const isUserAdmin = uGuilds.filter(({ permissions }) => (Number.parseInt(permissions) & 0x8) === 0x8);
const isUserOwner = uGuilds.filter(({ owner }) => owner);
const mutualAdminGuilds = isUserAdmin.filter(
(guild: GuildDTO) => bGuilds.some((g: GuildDTO) => g.id === guild.id) && !guild.owner,
);
const mutualOwnerGuilds = isUserOwner.filter((guild) => bGuilds.some((g) => g.id !== guild.id));
return {
mutual: {
admin: mutualAdminGuilds,
owner: mutualOwnerGuilds,
},
};
}
public async getGuildChannels(guildId: string): Promise<AxiosResponse<PartialChannelData, unknown>> {
return this.DiscordHttp.fetchGuildChannels(guildId);
}
}
|