DiscordWhitelist/autowl/Cogs/Whitelist.py

72 lines
2.6 KiB
Python
Raw Permalink Normal View History

import discord
import logging
import mysql.connector
from autowl import config
from autowl.bot import Bot
from discord.ext import commands
from discord import app_commands
log = logging.getLogger(__name__)
class Whitelist(commands.Cog):
def __init__(self, client: Bot):
self.client = client
@app_commands.command()
async def link(self, interaction: discord.Interaction, steam64: str):
2023-08-01 21:17:23 -05:00
self.client.squadjs.connect()
if not interaction.guild:
await interaction.response.send_message(
"This command must be ran within a discord server!"
)
return
2023-08-01 21:17:23 -05:00
updatecur = self.client.squadjs.cursor(buffered=True)
try:
2024-10-01 18:27:04 -05:00
updatecur.execute(
self.client.squadjs_updateDiscordID, (interaction.user.id, steam64)
)
2023-04-17 22:11:05 -05:00
rowsaffected = updatecur.rowcount
2023-04-17 21:40:13 -05:00
if rowsaffected <= 0:
2024-10-01 18:27:04 -05:00
updatecur.execute(
self.client.squadjs_findByDiscordID, [interaction.user.id]
)
2023-04-17 22:30:18 -05:00
if updatecur.rowcount <= 0:
await interaction.response.send_message("Cound not find SteamID!")
else:
for urole in interaction.user.roles:
if urole.id in self.client.whitelistGrps.keys():
2024-10-01 18:27:04 -05:00
self.client.whitelistGrps[urole.id].members[
f"{interaction.user.id}"
].steam64 = steam64
2023-04-17 22:30:18 -05:00
self.client.whitelistGrps[urole.id].updateGroup()
2024-10-01 18:27:04 -05:00
await interaction.response.send_message(
"SteamID already linked, roles updated."
)
2023-08-01 21:17:23 -05:00
self.client.squadjs.commit()
2023-04-17 21:36:32 -05:00
return
except mysql.connector.Error as err:
log.error("MYSQL error!")
2024-10-01 18:27:04 -05:00
await interaction.response.send_message(
"There was an internal server error, pls contact skillet"
)
2023-04-17 21:24:22 -05:00
return
for urole in interaction.user.roles:
if urole.id in self.client.whitelistGrps.keys():
2024-10-01 18:27:04 -05:00
disusername = (
interaction.user.nick
if interaction.user.nick is not None
else interaction.user.name
)
self.client.whitelistGrps[urole.id].addMember(
config.WhitelistMember(interaction.user.id, disusername, steam64)
)
2023-08-01 21:17:23 -05:00
self.client.squadjs.commit()
self.client.squadjs.close()
2024-10-01 18:27:04 -05:00
await interaction.response.send_message(
f"discord is linked to steamID, roles updated."
)