|
1 | 1 | """User management""" |
2 | 2 |
|
| 3 | +import datetime |
| 4 | +import io |
3 | 5 | import logging |
4 | 6 | from typing import Optional |
5 | 7 | import discord |
6 | 8 | from discord import Role, app_commands |
7 | 9 | from discord.ext import commands |
8 | 10 | from sqlalchemy import select, func, and_ |
9 | 11 | from sqlalchemy.exc import IntegrityError |
10 | | - |
| 12 | +import csv |
11 | 13 | from bot import KDRBot |
12 | 14 | from database.dto.kd_roles import KDRole |
13 | 15 | from database.dto.users import User |
|
16 | 18 | from utils.register import register |
17 | 19 | from utils.role_management import RoleManagement |
18 | 20 | from utils.server_settings import get_guild, update_guild |
19 | | -from utils.users import get_users_csv |
| 21 | +from utils.users import get_users_csv, import_csv |
20 | 22 | from utils.voice_channel import create_voice_channel |
21 | 23 | from utils.voice_channels import add_voice_channel |
22 | 24 |
|
@@ -101,7 +103,29 @@ async def export_registered_users(self, interaction: discord.Interaction) -> Non |
101 | 103 | await interaction.followup.send("There are currently no registered users", ephemeral=True) |
102 | 104 | return |
103 | 105 | await interaction.followup.send("Registered users:", ephemeral=True, file=registered_users) |
104 | | - |
| 106 | + |
| 107 | + @group.command(name="import", description="Import registered users") |
| 108 | + @app_commands.guild_only() |
| 109 | + @app_commands.default_permissions(administrator=True) |
| 110 | + @app_commands.checks.has_permissions(administrator=True) |
| 111 | + async def import_registered_users(self, interaction: discord.Interaction, file: discord.Attachment) -> None: |
| 112 | + """Import registered users""" |
| 113 | + await interaction.response.defer() |
| 114 | + if interaction.guild is None: |
| 115 | + return # is already set to guild_only |
| 116 | + async with self.bot.db.create_session() as session: |
| 117 | + try: |
| 118 | + await import_csv(session, interaction.guild_id, file) |
| 119 | + await interaction.followup.send( |
| 120 | + "Users have been imported!", |
| 121 | + ephemeral=True, |
| 122 | + ) |
| 123 | + except Exception as e: |
| 124 | + await interaction.followup.send( |
| 125 | + "Something went wrong during the import, did you deliver the data in the same order as the export function?", |
| 126 | + ephemeral=True, |
| 127 | + ) |
| 128 | + print(e) |
105 | 129 |
|
106 | 130 | @group.command(name="unregister", description="Unregister a user") |
107 | 131 | @app_commands.describe(username="EA username") |
|
0 commit comments