Skip to content

Commit

Permalink
add passport package and make achievements add XP and points
Browse files Browse the repository at this point in the history
  • Loading branch information
LarmuseauNiels committed Apr 5, 2023
1 parent 0e06989 commit b617ed9
Show file tree
Hide file tree
Showing 7 changed files with 95 additions and 13 deletions.
6 changes: 3 additions & 3 deletions index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Require the necessary discord.js classes
import { PrismaClient } from "@prisma/client";
import { Islander } from "./islander/islander";
import { Achievements } from "./islander/Achievements";
import { AchievementsModule } from "./islander/AchievementsModule";
import { WebApi } from "./modules/WebApi";
import Bugsnag from "@bugsnag/js";
const fs = require("fs");
Expand All @@ -15,7 +15,7 @@ const { token, DBHOST, DBPASS } = require("./config.js");

class FpgClient extends Client {
declare islander: Islander;
declare achievements: Achievements;
declare achievementsModule: AchievementsModule;
declare prisma: PrismaClient;
declare commands: typeof Collection;
declare buttons: typeof Collection;
Expand Down Expand Up @@ -57,7 +57,7 @@ class FpgClient extends Client {
this.buttons = new Collection();
this.modals = new Collection();
this.contextMenus = new Collection();
this.achievements = new Achievements();
this.achievementsModule = new AchievementsModule();
this.chats = new Map();
this.webapi = new WebApi();
}
Expand Down
8 changes: 4 additions & 4 deletions interactions/commands/giveAchievement.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module.exports = {
name: "give-achievement",
data: new SlashCommandBuilder()
.setName("give-achievement")
.setDescription("give achievements to users")
.setDescription("give achievement to users")
.addUserOption((option) =>
option
.setName("user")
Expand All @@ -21,7 +21,7 @@ module.exports = {
option
.setName("description")
.setDescription(
"Optional extra description for this instance of the achievement"
"Optional description for this instance of the achievement"
)
.setRequired(false)
)
Expand All @@ -32,15 +32,15 @@ module.exports = {
const achievement = +interaction.options.getString("achievement");
const description = interaction.options.getString("description");
console.log(achievement, interaction.options.getString("achievement"));
await global.client.achievements.GiveAchievement(
await global.client.achievementsModule.GiveAchievement(
user.id,
achievement,
interaction.user.id
);
await interaction.reply("Achievement given");
},
async autocomplete(interaction) {
global.client.achievements
global.client.achievementsModule
.GetManualAchievements()
.then(async (achievements) => {
const focusedValue = interaction.options.getFocused();
Expand Down
2 changes: 1 addition & 1 deletion interactions/commands/profile.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = {
.setDescription("show your profile"),
async execute(interaction) {
//interaction.deferReply();
global.client.achievements
global.client.achievementsModule
.GetProfile(interaction.user.id)
.then((profile) => {
interaction.reply({ files: [profile] });
Expand Down
39 changes: 35 additions & 4 deletions islander/Achievements.ts → islander/AchievementsModule.ts
Original file line number Diff line number Diff line change
@@ -1,26 +1,57 @@
import Canvas, { createCanvas, Image } from "@napi-rs/canvas";
import { readFile } from "fs/promises";
import { AttachmentBuilder, User } from "discord.js";
const { request } = require("undici");

export class Achievements {
export class AchievementsModule {
async GiveAchievement(
memberID: string,
achievementID: number,
grantedBy: string
) {
// get achievement
let achievement = await global.client.prisma.achievements.findFirst({
where: {
ID: achievementID,
},
});

console.log("Giving achievement: " + achievement.Name + " to " + memberID);
await global.client.prisma.achievement_History.create({
data: {
UserID: memberID,
AchievementID: achievementID,
GrantedBy: grantedBy,
},
});

if (achievement.XpIncrease > 0) {
// get member
await global.client.prisma.members.update({
where: {
ID: memberID,
},
data: {
XP: { increment: achievement.XpIncrease },
},
});
}
//check if achievement gives points
if (achievement.points > 0) {
await global.client.prisma.points.update({
where: {
userid: memberID,
},
data: {
TotalPoints: { increment: achievement.points },
lastComment: achievement.Name + " " + achievement.Description,
},
});
}
}

// get all achievements where type is manual
// get all achievementsModule where type is manual
async GetManualAchievements() {
return await global.client.prisma.achievements.findMany({
return global.client.prisma.achievements.findMany({
where: {
Type: "Manual",
},
Expand Down
31 changes: 31 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"express": "^4.17.1",
"node-cron": "^3.0.0",
"openai": "^3.2.1",
"passport": "^0.6.0",
"typescript": "^5.0.2"
},
"devDependencies": {
Expand Down
21 changes: 20 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -796,11 +796,30 @@ parseurl@~1.3.3:
resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==

passport-strategy@1.x.x:
version "1.0.0"
resolved "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz"
integrity sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==

passport@^0.6.0:
version "0.6.0"
resolved "https://registry.npmjs.org/passport/-/passport-0.6.0.tgz"
integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==
dependencies:
passport-strategy "1.x.x"
pause "0.0.1"
utils-merge "^1.0.1"

path-to-regexp@0.1.7:
version "0.1.7"
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz"
integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==

pause@0.0.1:
version "0.0.1"
resolved "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz"
integrity sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg==

peek-readable@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz"
Expand Down Expand Up @@ -1039,7 +1058,7 @@ util-deprecate@^1.0.1:
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==

utils-merge@1.0.1:
utils-merge@^1.0.1, utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
Expand Down

0 comments on commit b617ed9

Please sign in to comment.