From 2d3f7f68fe4f34475ddd42bd23adc454c2f38d2a Mon Sep 17 00:00:00 2001 From: HumanoidSandvichDispenser Date: Thu, 15 May 2025 09:54:52 -0700 Subject: [PATCH] Add Discord bot --- .../src/client/models/GetUserResponse.ts | 1 + .../src/client/models/PlayerSchema.ts | 1 + .../client/models/ViewTeamMembersResponse.ts | 1 + availabili.tf/src/stores/auth.ts | 3 + availabili.tf/src/views/UserSettingsView.vue | 39 ++++- backend-flask/Dockerfile | 2 +- backend-flask/app_db.py | 20 ++- backend-flask/discord_bot.py | 155 ++++++++++++++++++ backend-flask/login.py | 18 +- ...8108d7ff_make_players_discord_id_unique.py | 32 ++++ ...8a37924fd1be_add_uniqueness_constraints.py | 32 ++++ ...330df94c44_add_players_discord_id_field.py | 32 ++++ backend-flask/models/event.py | 108 ++++++++---- backend-flask/models/player.py | 5 +- backend-flask/requirements.txt | 5 +- backend-flask/user.py | 40 ++++- docker-compose.prod.yml | 18 +- docker-compose.yml | 16 +- 18 files changed, 478 insertions(+), 50 deletions(-) create mode 100644 backend-flask/discord_bot.py create mode 100644 backend-flask/migrations/versions/251a8108d7ff_make_players_discord_id_unique.py create mode 100644 backend-flask/migrations/versions/8a37924fd1be_add_uniqueness_constraints.py create mode 100644 backend-flask/migrations/versions/f4330df94c44_add_players_discord_id_field.py diff --git a/availabili.tf/src/client/models/GetUserResponse.ts b/availabili.tf/src/client/models/GetUserResponse.ts index 3d6f38c..ea08c76 100644 --- a/availabili.tf/src/client/models/GetUserResponse.ts +++ b/availabili.tf/src/client/models/GetUserResponse.ts @@ -4,6 +4,7 @@ /* eslint-disable */ import type { PlayerSchema } from './PlayerSchema'; export type GetUserResponse = { + discordId?: (string | null); isAdmin?: boolean; realUser: (PlayerSchema | null); steamId: string; diff --git a/availabili.tf/src/client/models/PlayerSchema.ts b/availabili.tf/src/client/models/PlayerSchema.ts index 0e86040..9ae186c 100644 --- a/availabili.tf/src/client/models/PlayerSchema.ts +++ b/availabili.tf/src/client/models/PlayerSchema.ts @@ -3,6 +3,7 @@ /* tslint:disable */ /* eslint-disable */ export type PlayerSchema = { + discordId?: (string | null); isAdmin?: boolean; steamId: string; username: string; diff --git a/availabili.tf/src/client/models/ViewTeamMembersResponse.ts b/availabili.tf/src/client/models/ViewTeamMembersResponse.ts index 7ec2da3..6ebac34 100644 --- a/availabili.tf/src/client/models/ViewTeamMembersResponse.ts +++ b/availabili.tf/src/client/models/ViewTeamMembersResponse.ts @@ -6,6 +6,7 @@ import type { RoleSchema } from './RoleSchema'; export type ViewTeamMembersResponse = { availability: Array; createdAt: string; + discordId?: (string | null); isAdmin?: boolean; isTeamLeader?: boolean; playtime: number; diff --git a/availabili.tf/src/stores/auth.ts b/availabili.tf/src/stores/auth.ts index f92d54a..e375874 100644 --- a/availabili.tf/src/stores/auth.ts +++ b/availabili.tf/src/stores/auth.ts @@ -16,6 +16,7 @@ export const useAuthStore = defineStore("auth", () => { const hasCheckedAuth = ref(false); const isAdmin = ref(false); const realUser = ref(null); + const discordId = ref(""); const router = useRouter(); @@ -39,6 +40,7 @@ export const useAuthStore = defineStore("auth", () => { user.value = response; isAdmin.value = response.isAdmin || (response.realUser?.isAdmin ?? false); realUser.value = response.realUser ?? null; + discordId.value = response.discordId ?? ""; return response; }, @@ -116,6 +118,7 @@ export const useAuthStore = defineStore("auth", () => { username, isAdmin, realUser, + discordId, isLoggedIn, hasCheckedAuth, isRegistering, diff --git a/availabili.tf/src/views/UserSettingsView.vue b/availabili.tf/src/views/UserSettingsView.vue index ec16a42..cfc1aae 100644 --- a/availabili.tf/src/views/UserSettingsView.vue +++ b/availabili.tf/src/views/UserSettingsView.vue @@ -1,6 +1,20 @@